parallel ip - initial checkin

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project
new file mode 100644
index 0000000..825ca3a
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.aggregator</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..4902fef
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG                                    -->
+<!--# All rights reserved. This program and the accompanying materials 		 -->
+<!--# are made available under the terms of the Eclipse Public License v1.0  -->
+<!--# which accompanies this distribution, and is available at               -->
+<!--# http://www.eclipse.org/legal/epl-v10.html                              -->
+<!--#                                                                        -->
+<!--# Contributors:                                                          -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job 						 -->
+<!--#======================================================================= -->
+
+<jenkins>
+	<!-- DO NOT EDIT BELOW THIS LINE -->
+        <jenkins.build.dependencies>
+                <jenkins.build.dependency>org.eclipse.osbp.authentication</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.bpm.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.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.table.common</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.project b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.project
new file mode 100644
index 0000000..3d9f17c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/LICENSE.txt b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/build.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/build.properties
new file mode 100644
index 0000000..e37026e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/build.properties
@@ -0,0 +1,6 @@
+bin.includes = epl-v10.html,  feature.xml,\
+               feature.properties,\
+               LICENSE.txt,\
+               license.html
+src.includes = epl-v10.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/epl-v10.html b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.properties
new file mode 100644
index 0000000..4133cc5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.properties
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml
new file mode 100644
index 0000000..0f456eb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/feature.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+      id="org.eclipse.osbp.xtext.functionlibrarydsl.feature"
+      label="%featureName"
+      version="0.9.0.qualifier"
+      provider-name="%providerName">
+
+   <description>
+      %description
+   </description>
+
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.osbp.xtext.functionlibrarydsl"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.xtext.functionlibrarydsl.provider"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.xtext.functionlibrarydsl.tests"
+         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"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/license.html b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/plugin.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/plugin.properties
new file mode 100644
index 0000000..ee7c623
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors:  
+#  		Joerg Riegel - Initial implementation 
+#  
+
+pluginName = OSBP Function Library DSL
+providerName = http://www.osbee.org
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/pom.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/pom.xml
new file mode 100644
index 0000000..460e0ac
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/pom.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.osbp.xtext.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.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>
+					<excludes>
+						<feature id="org.eclipse.uomo.feature"/>
+					</excludes>
+				</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.functionlibrarydsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.functionlibrarydsl</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.functionlibrarydsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.provider</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.functionlibrarydsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.tests</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.functionlibrarydsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.ui</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.feature/src/overview.html b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/src/overview.html
new file mode 100644
index 0000000..eecb195
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.feature/src/overview.html
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP Tools Graphical Entity</title>
+</head>
+<body>
+<p>The <strong>OSBP&nbsp;Xtext&nbsp;Functionlibrary DSL&nbsp;</strong>implements the functionlibrary.</p>
+
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/.project b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/.project
new file mode 100644
index 0000000..ba3474c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.provider</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/LICENSE.txt b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..67e0d40
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.functionlibrarydsl.provider
+Bundle-SymbolicName: org.eclipse.osbp.xtext.functionlibrarydsl.provider
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.xtext.functionlibrarydsl.provider;version="0.9.0"
+Require-Bundle: org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.eclipse.osbp.ui.api.functionlibrary;version="0.9.0",
+ org.eclipse.osbp.ui.api.statemachine;version="0.9.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/org.eclipse.osbp.xtext.functionlibrarydsl.provider.FunctionLibraryService.xml
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/OSGI-INF/org.eclipse.osbp.xtext.functionlibrarydsl.provider.FunctionLibraryService.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/OSGI-INF/org.eclipse.osbp.xtext.functionlibrarydsl.provider.FunctionLibraryService.xml
new file mode 100644
index 0000000..7256ec3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/OSGI-INF/org.eclipse.osbp.xtext.functionlibrarydsl.provider.FunctionLibraryService.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.xtext.functionlibrarydsl.provider.FunctionLibraryService">
+   <service>
+      <provide interface="org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryService"/>
+   </service>
+   <reference bind="addFunctionLibraryPackage" cardinality="0..n" interface="org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryPackage" name="FunctionLibraryPackage" policy="dynamic" unbind="removeFunctionLibraryPackage"/>
+   <implementation class="org.eclipse.osbp.xtext.functionlibrarydsl.provider.FunctionLibraryService"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.html b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.ini b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.mappings b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.properties
new file mode 100644
index 0000000..5755837
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.functionlibrarydsl.provider
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/build.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/build.properties
new file mode 100644
index 0000000..0c5a1d3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               OSGI-INF/,\
+               .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/epl-v10.html b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/license.html b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/pom.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/pom.xml
new file mode 100644
index 0000000..96ca68c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/pom.xml
@@ -0,0 +1,25 @@
+<?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.provider</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>Service provider for function library</name>
+	<description>This bundle provides service implementations for the api bundle.</description>
+</project>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.provider/src/org/eclipse/osbp/xtext/functionlibrarydsl/provider/FunctionLibraryService.java b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/src/org/eclipse/osbp/xtext/functionlibrarydsl/provider/FunctionLibraryService.java
new file mode 100644
index 0000000..f1537fb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.provider/src/org/eclipse/osbp/xtext/functionlibrarydsl/provider/FunctionLibraryService.java
@@ -0,0 +1,291 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.provider;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.MethodDescriptor;
+import java.beans.ParameterDescriptor;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryGroup;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryPackage;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryService;
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This service provides access to the function library.
+ */
+@Component(immediate = true)
+public class FunctionLibraryService implements IFunctionLibraryService {
+
+	private final Logger LOGGER = LoggerFactory
+			.getLogger(FunctionLibraryService.class);
+	private Set<ServiceReference<IFunctionLibraryPackage>> functionLibraryPackages = new HashSet<>();
+	private Set<Bundle> bundles = new HashSet<>();
+	@SuppressWarnings("unused")
+	private ComponentContext context;
+
+	@Activate
+	protected void activate(ComponentContext context) {
+		this.context = context;
+	}
+
+	@Deactivate
+	protected void deactivate(ComponentContext context) {
+		this.context = null;
+		functionLibraryPackages.clear();
+		bundles.clear();
+	}
+
+	@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC, unbind = "removeFunctionLibraryPackage")
+	public synchronized void addFunctionLibraryPackage(
+			final ServiceReference<IFunctionLibraryPackage> ref) {
+
+		functionLibraryPackages.add(ref);
+
+		createBundleList();
+
+		LOGGER.debug("IFunctionLibraryPackage " + ref.getProperty("name")
+				+ " bound");
+	}
+
+	public synchronized void removeFunctionLibraryPackage(
+			final ServiceReference<IFunctionLibraryPackage> ref) {
+		functionLibraryPackages.remove(ref);
+
+		createBundleList();
+
+		LOGGER.debug("IFunctionLibraryPackage " + ref.getProperty("name")
+				+ " unbound");
+	}
+
+	private void createBundleList() {
+		if (LOGGER.isDebugEnabled())
+			LOGGER.debug("creating class loader list");
+		bundles.clear();
+		for (ServiceReference<IFunctionLibraryPackage> ref : functionLibraryPackages) {
+			try {
+				bundles.add(ref.getBundle());
+			} catch (Exception e) {
+				LOGGER.error("{}", e);
+			}
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private Class<IFunctionLibraryGroup> getFunctionLibraryClass(
+			String className) {
+		for (Bundle bundle : bundles) {
+			try {
+				return (Class<IFunctionLibraryGroup>) bundle
+						.loadClass(className);
+			} catch (ClassNotFoundException e) {
+				LOGGER.error("{}", e);
+			}
+		}
+		return null;
+	}
+
+	private Object callFunctionLibrary(
+			Class<IFunctionLibraryGroup> functionLibGroupClass,
+			String methodName, Object fieldValue, Locale locale,
+			Object... params) {
+		if (functionLibGroupClass != null) {
+			try {
+				IFunctionLibraryGroup functionLibGroup = functionLibGroupClass
+						.newInstance();
+				for (Method method : functionLibGroupClass.getDeclaredMethods()) {
+					if (method.getName().equals(methodName)) {
+						try {
+							// both locale and fieldValue are set
+							if (locale != null && fieldValue != null) {
+								if (params.length > 0) {
+									return method.invoke(functionLibGroup,
+											fieldValue, locale, params);
+								}
+								return method.invoke(functionLibGroup,
+										fieldValue, locale);
+							}
+							// both locale and fieldValue are UNSET
+							else if (locale == null && fieldValue == null) {
+								return method.invoke(functionLibGroup);
+							}
+							// either locale or fieldValue is set, the other is
+							// unset
+							// only fieldValue is set
+							else if (fieldValue != null) {
+								return method.invoke(functionLibGroup,
+										fieldValue);
+							}
+							// only locale is set (last possible condition)
+							else {
+								return method.invoke(functionLibGroup, locale);
+							}
+						} catch (IllegalArgumentException e) {
+							LOGGER.error("{}", e);
+						} catch (InvocationTargetException e) {
+							LOGGER.error("{}", e);
+						}
+					}
+				}
+			} catch (InstantiationException e) {
+				LOGGER.error("{}", e);
+			} catch (IllegalAccessException e) {
+				LOGGER.error("{}", e);
+			}
+		}
+		return null;
+	}
+
+	public Object callFunctionLibrary(String className, String methodName,
+			Object fieldValue, Locale locale, Object... params) {
+		return callFunctionLibrary(getFunctionLibraryClass(className),
+				methodName, fieldValue, locale, params);
+	}
+
+	public Object callFunctionLibrary(String className, String methodName,
+			Object fieldValue) {
+		return callFunctionLibrary(getFunctionLibraryClass(className),
+				methodName, fieldValue, null);
+	}
+
+	public Object callFunctionLibrary(String className, String methodName,
+			Locale locale) {
+		return callFunctionLibrary(getFunctionLibraryClass(className),
+				methodName, null, locale);
+	}
+
+	public Object callFunctionLibrary(String className, String methodName) {
+		return callFunctionLibrary(className, methodName, null);
+	}
+
+	public boolean guard(IStateMachine statemachine, String className,
+			String methodName) {
+		Class<?> clz = getFunctionLibraryClass(className);
+		try {
+			BeanInfo info = Introspector.getBeanInfo(clz);
+			for (MethodDescriptor methodDesc : info.getMethodDescriptors()) {
+				Method method = methodDesc.getMethod();
+				Class[] parameterTypes = method.getParameterTypes();
+				if (methodName.equals(method.getName())) {
+					if(parameterTypes.length == 1) {
+						if(IStateMachine.class.isAssignableFrom(parameterTypes[0])) {
+							if(boolean.class.isAssignableFrom(method.getReturnType())) {
+								return (Boolean) method.invoke(clz, statemachine);
+							} else {
+								LOGGER.error("method "+methodName+" in class "+className+" must have a return type Boolean. Found "+method.getReturnType().getCanonicalName()+" instead.");
+							}
+						} else {
+							LOGGER.error("method "+methodName+" in class "+className+" must have a parameter of type IStateMachine. Found "+parameterTypes[0].getCanonicalName()+" instead.");
+						}
+					} else {
+						LOGGER.error("method "+methodName+" in class "+className+" must have exactly 1 parameter. Found "+parameterTypes.length+" parameters instead.");
+					}
+				}
+			}
+			LOGGER.error("method "+methodName+" was not found in class "+className);
+		} catch (IntrospectionException | IllegalAccessException
+				| IllegalArgumentException | InvocationTargetException e) {
+			LOGGER.error("{}", e);
+		}
+		return false;
+	}
+
+	public boolean operation(IStateMachine statemachine, String className,
+			String methodName, Object... params) {
+		Class<?> clz = getFunctionLibraryClass(className);
+		try {
+			BeanInfo info = Introspector.getBeanInfo(clz);
+			for (MethodDescriptor methodDesc : info.getMethodDescriptors()) {
+				Method method = methodDesc.getMethod();
+				Class[] parameterTypes = method.getParameterTypes();
+				if (methodName.equals(method.getName())) {
+					if(parameterTypes.length >= 1) {
+						if(IStateMachine.class.isAssignableFrom(parameterTypes[0])) {
+							if(boolean.class.isAssignableFrom(method.getReturnType())) {
+								if(parameterTypes.length == 1) {
+									return (Boolean) method.invoke(clz, statemachine);
+								} else {
+									return (Boolean) method.invoke(clz, statemachine, params);
+								}
+							} else {
+								LOGGER.error("method "+methodName+" in class "+className+" must have a return type Boolean. Found "+method.getReturnType().getCanonicalName()+" instead.");
+							}
+						} else {
+							LOGGER.error("method "+methodName+" in class "+className+" must have as first parameter type IStateMachine. Found "+parameterTypes[0].getCanonicalName()+" instead.");
+						}
+					} else {
+						LOGGER.error("method "+methodName+" in class "+className+" must have at least one parameter. Found "+parameterTypes.length+" parameters instead.");
+					}
+				}
+			}
+			LOGGER.error("method "+methodName+" was not found in class "+className);
+		} catch (IntrospectionException | IllegalAccessException
+				| IllegalArgumentException | InvocationTargetException e) {
+			LOGGER.error("{}", e);
+		}
+		return false;
+	}
+
+	@Override
+	public Object function(IStateMachine statemachine, String className,
+			String methodName, Object... params) {
+		Class<?> clz = getFunctionLibraryClass(className);
+		try {
+			BeanInfo info = Introspector.getBeanInfo(clz);
+			for (MethodDescriptor methodDesc : info.getMethodDescriptors()) {
+				Method method = methodDesc.getMethod();
+				Class[] parameterTypes = method.getParameterTypes();
+				if (methodName.equals(method.getName())) {
+					if(parameterTypes.length >= 1) {
+						if(IStateMachine.class.isAssignableFrom(parameterTypes[0])) {
+							if(parameterTypes.length == 1) {
+								return method.invoke(clz, statemachine);
+							} else {
+								return method.invoke(clz, statemachine, params);
+							}
+						} else {
+							LOGGER.error("method "+methodName+" in class "+className+" must have as first parameter type IStateMachine. Found "+parameterTypes[0].getCanonicalName()+" instead.");
+						}
+					} else {
+						LOGGER.error("method "+methodName+" in class "+className+" must have at least one parameter. Found "+parameterTypes.length+" parameters instead.");
+					}
+				}
+			}
+			LOGGER.error("method "+methodName+" was not found in class "+className);
+		} catch (IntrospectionException | IllegalAccessException
+				| IllegalArgumentException | InvocationTargetException e) {
+			LOGGER.error("{}", e);
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/.project b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/.project
new file mode 100644
index 0000000..227f3d0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/LICENSE.txt b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b81b6df
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.functionlibrarydsl.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.functionlibrarydsl.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ com.google.inject;bundle-version="3.0.0"
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.functionlibrarydsl;version="0.9.0"
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.html b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.ini b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.mappings b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.properties
new file mode 100644
index 0000000..76e563c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.functionlibrarydsl.tests
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/build.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/build.properties
new file mode 100644
index 0000000..7d9b159
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/build.properties
@@ -0,0 +1,11 @@
+source.. = src/,\
+          src-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/epl-v10.html b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/license.html b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/org.eclipse.osbp.xtext.functionlibrarydsl.tests.launch b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/org.eclipse.osbp.xtext.functionlibrarydsl.tests.launch
new file mode 100644
index 0000000..62aa157
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/org.eclipse.osbp.xtext.functionlibrarydsl.tests.launch
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.xtext.functionlibrarydsl.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.osbp.xtext.functionlibrarydsl.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.xtext.functionlibrarydsl.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/plugin.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/plugin.properties
new file mode 100644
index 0000000..9ee24f2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors:  
+#  		Joerg Riegel - Initial implementation 
+#  
+
+pluginName = OSBP Function Library DSL Tests
+providerName = http://www.osbee.org
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/pom.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/pom.xml
new file mode 100644
index 0000000..3b26f9f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.tests</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <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>
+</project>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslInjectorProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslInjectorProvider.java
new file mode 100644
index 0000000..85589ea
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslInjectorProvider.java
@@ -0,0 +1,56 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.xtext.junit4.GlobalRegistries;
+import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.junit4.IRegistryConfigurator;
+
+import com.google.inject.Injector;
+
+public class FunctionLibraryDslInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+	
+    protected GlobalStateMemento stateBeforeInjectorCreation;
+	protected GlobalStateMemento stateAfterInjectorCreation;
+	protected Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+
+	public Injector getInjector()
+	{
+		if (injector == null) {
+			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+			this.injector = internalCreateInjector();
+			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+		}
+		return injector;
+	}
+	
+	protected Injector internalCreateInjector() {
+	    return new FunctionLibraryDslStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslUiInjectorProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslUiInjectorProvider.java
new file mode 100644
index 0000000..10d3e25
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslUiInjectorProvider.java
@@ -0,0 +1,27 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class FunctionLibraryDslUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.internal.FunctionLibraryDslActivator.getInstance().getInjector("org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl");
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src/ReadMe.txt b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src/ReadMe.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.tests/src/ReadMe.txt
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/.project b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/.project
new file mode 100644
index 0000000..146d4f6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/LICENSE.txt b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cb52957
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,39 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.functionlibrarydsl.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.functionlibrarydsl.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.antlr.runtime,
+ com.google.inject;bundle-version="3.0.0",
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.eclipse.osbp.utils.constants;version="0.9.0",
+ javax.validation,
+ org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.functionlibrarydsl.ui;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.outline;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.ui.quickfix;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.functionlibrarydsl.ui.internal.FunctionLibraryDslActivator
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.html b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.ini b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.mappings b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.properties
new file mode 100644
index 0000000..7dc66d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.functionlibrarydsl.ui
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/build.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/build.properties
new file mode 100644
index 0000000..8a1bc3b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/build.properties
@@ -0,0 +1,17 @@
+source.. = src/,\
+           xtend-gen/,\
+           src-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               i18n/,\
+               templates/,\
+               icons/,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  icons/,\
+               LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/epl-v10.html b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/i18n/I18N.properties b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/i18n/I18N.properties
new file mode 100644
index 0000000..6cbb466
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/i18n/I18N.properties
@@ -0,0 +1,67 @@
+#
+#Mon Jan 23 17:01:13 CET 2017
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionConvertToModel=convert presentationValue, presentationLocale, and presentationParams to a Double instance
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionConvertToModel.()=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionConvertToModel.to-model=convert presentationValue, presentationLocale, and presentationParams to a Double instance
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionConvertToPresentation=convert modelValue, modelLocale, and modelParams to a BaseAmount instance
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionConvertToPresentation.()=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionConvertToPresentation.to-presentation=convert modelValue, modelLocale, and modelParams to a BaseAmount instance
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryConverterGroup=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryConverterGroup.converter=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryConverterGroup.model-datatype=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryConverterGroup.presentation-datatype=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryFunction=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryFunction.function=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryFunction.returns=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryGroup=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryGroup.group=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryModel=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryPackage=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryPackage.package=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryParameter=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryRate=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryRate.rate=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryRate.returns=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryRating=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryRating.rating=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryRatingItem=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryTest=
+org.eclipse.osbp.xtext.functionlibrarydsl.CCFunctionLibraryTest.test=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel.to-model=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation.to-presentation=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryAction=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryAction.action=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryAction.returns=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup.blip-group=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup.converter=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup.model-datatype=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup.presentation-datatype=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction.function=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction.returns=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup.group=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard.guard=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation.operation=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation.returns=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage.package=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate.rate=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate.returns=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating.rating=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup.statemachine=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest=
+org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest.test=
+org.eclipse.osbp.xtext.functionlibrarydsl.TYPE_CROSS_REFERENCE=
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/converter.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/converter.png
new file mode 100644
index 0000000..3466796
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/converter.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/dsl_functionlibrary.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/dsl_functionlibrary.png
new file mode 100644
index 0000000..8c77f4d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/dsl_functionlibrary.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/dsl_import.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/dsl_import.png
new file mode 100644
index 0000000..f4fdcc9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/dsl_import.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/enum-object.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/enum-object.png
new file mode 100644
index 0000000..6734b21
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/enum-object.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/expression.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/expression.png
new file mode 100644
index 0000000..57fd2ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/expression.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function.png
new file mode 100644
index 0000000..82c2a2e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function1.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function1.png
new file mode 100644
index 0000000..567e4d0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function1.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function2.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function2.png
new file mode 100644
index 0000000..e44f7be
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/function2.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/group.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/group.png
new file mode 100644
index 0000000..253d3c3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/group.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/model.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/model.png
new file mode 100644
index 0000000..cffb857
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/model.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/package.gif b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/package.gif
new file mode 100644
index 0000000..34506fb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/package.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/params.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/params.png
new file mode 100644
index 0000000..98debd1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/params.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/reference.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/reference.png
new file mode 100644
index 0000000..fd899cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/reference.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run.png
new file mode 100644
index 0000000..fe143fc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run1.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run1.png
new file mode 100644
index 0000000..53841fd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run1.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run2.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run2.png
new file mode 100644
index 0000000..7a0b136
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run2.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run3.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run3.png
new file mode 100644
index 0000000..13d9b56
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run3.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run4.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run4.png
new file mode 100644
index 0000000..b16d28a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/run4.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun.png
new file mode 100644
index 0000000..a0f6353
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun1.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun1.png
new file mode 100644
index 0000000..a690b2c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun1.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun2.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun2.png
new file mode 100644
index 0000000..5e47175
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun2.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun3.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun3.png
new file mode 100644
index 0000000..2f4c09c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun3.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun4.png b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun4.png
new file mode 100644
index 0000000..fcfd3e8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/icons/testrun4.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/license.html b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/plugin.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/plugin.xml
new file mode 100644
index 0000000..e26e654
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/plugin.xml
@@ -0,0 +1,532 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+              class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="functionlibrary"
+              icon="icons/dsl_functionlibrary.png"
+              id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+              matchingStrategy="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+              name="OSBP FunctionLibraryDsl Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            icon="icons/dsl_functionlibrary.png"
+            name="OSBP FunctionLibraryDsl">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.coloring"
+            icon="icons/dsl_functionlibrary.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.templates"
+            icon="icons/dsl_functionlibrary.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              icon="icons/dsl_functionlibrary.png"
+              id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+              name="OSBP FunctionLibraryDsl">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"
+            label="OSBP FunctionLibraryDsl"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="functionlibrary">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="functionlibrary">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl -->
+	<extension
+	        id="functionlibrarydsl.check.fast"
+	        name="OSBP FunctionLibraryDsl Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="functionlibrarydsl.check.normal"
+	        name="OSBP FunctionLibraryDsl Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="functionlibrarydsl.check.expensive"
+	        name="OSBP FunctionLibraryDsl Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compiler.preferencePage"
+            icon="icons/dsl_functionlibrary.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+              class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+              icon="icons/dsl_functionlibrary.png"
+              id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compiler.propertyPage"
+              name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.functionlibrarydsl.ui.functionlibrarydsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.functionlibrarydsl.ui.functionlibrarydsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.functionlibrarydsl.ui.functionlibrarydsl.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+	        class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.refactoring"
+            icon="icons/dsl_functionlibrary.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy"
+				style="push"
+				tooltip="Open Type Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy"
+				style="push"
+				tooltip="Quick Type Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy"
+				style="push"
+				tooltip="Open Call Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.smap.StratumBreakpointAdapterFactory"
+         adaptableType="org.eclipse.xtext.ui.editor.XtextEditor">
+         <adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
+      </factory> 
+   </extension>
+   <extension point="org.eclipse.ui.editorActions">
+      <editorContribution targetID="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl" 
+                          id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.ide.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="example.rulerContextMenuId"
+         id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.ide.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="additions"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.ide.rulerContextMenu.toggleBreakpointAction">
+         </action>
+      </viewerContribution>
+   </extension>
+   
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="functionlibrary">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="functionlibrary" label="FunctionLibraryDsl Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="functionlibrary">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/plugin.xml_gen
new file mode 100644
index 0000000..b6fefc3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/plugin.xml_gen
@@ -0,0 +1,584 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="functionlibrary"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            matchingStrategy="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="FunctionLibraryDsl Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            name="FunctionLibraryDsl">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            name="FunctionLibraryDsl">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"
+            label="FunctionLibraryDsl"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="functionlibrary">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="functionlibrary">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl -->
+	<extension
+	        id="functionlibrarydsl.check.fast"
+	        name="FunctionLibraryDsl Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="functionlibrarydsl.check.normal"
+	        name="FunctionLibraryDsl Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="functionlibrarydsl.check.expensive"
+	        name="FunctionLibraryDsl Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="functionlibrary"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.functionlibrarydsl.ui.functionlibrarydsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.functionlibrarydsl.ui.functionlibrarydsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.functionlibrarydsl.ui.functionlibrarydsl.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl"
+	        class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.functionlibrarydsl.ui.keyword_FunctionLibraryDsl"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.imports.OrganizeImportsHandler"
+            commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+           	<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+        </handler>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+	    <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.xtext.xbase.ui.organizeImports"
+                 style="push"
+                 tooltip="Organize Imports">
+                <visibleWhen checkEnabled="false">
+                    <reference
+                        definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+                    </reference>
+                </visibleWhen>
+            </command>  
+        </menuContribution>
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy"
+				style="push"
+				tooltip="Open Type Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy"
+				style="push"
+				tooltip="Quick Type Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy"
+				style="push"
+				tooltip="Open Call Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.builder.smap.StratumBreakpointAdapterFactory"
+         adaptableType="org.eclipse.xtext.ui.editor.XtextEditor">
+         <adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
+      </factory> 
+   </extension>
+   <extension point="org.eclipse.ui.editorActions">
+      <editorContribution targetID="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl" 
+                          id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.RulerContext"
+         id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.rulerContextMenu.toggleBreakpointAction">
+         </action>
+         <action
+            label="Not used"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.rulerContextMenu.enableDisableBreakpointAction">
+         </action>
+         <action
+           label="Breakpoint Properties"
+           helpContextId="breakpoint_properties_action_context"
+           class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+           menubarPath="group.properties"
+           id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.rulerContextMenu.openBreapointPropertiesAction">
+         </action>
+      </viewerContribution>
+   </extension>
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+   <!-- Open implementation -->
+   <extension point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+            commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+            <activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+      </handler>
+   </extension>
+ <extension point="org.eclipse.ui.menus">
+       <menuContribution
+            locationURI="menu:navigate?after=open.ext4">
+         <command commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+		<visibleWhen checkEnabled="false">
+              <reference
+                 definitionId="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.Editor.opened">
+              </reference>
+		</visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="functionlibrary">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="functionlibrary" label="FunctionLibraryDsl Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="functionlibrary">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/pom.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/pom.xml
new file mode 100644
index 0000000..9f61a6b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.ui</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <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>
+</project>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/AbstractFunctionLibraryDslUiModule.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/AbstractFunctionLibraryDslUiModule.java
new file mode 100644
index 0000000..36aaf77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/AbstractFunctionLibraryDslUiModule.java
@@ -0,0 +1,380 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractFunctionLibraryDslUiModule extends DefaultUiModule {
+	
+	public AbstractFunctionLibraryDslUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.XtextEditor> bindXtextEditor() {
+		return org.eclipse.xtext.xbase.ui.editor.XbaseEditor.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.model.XtextDocumentProvider> bindXtextDocumentProvider() {
+		return org.eclipse.xtext.xbase.ui.editor.XbaseDocumentProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling.FunctionLibraryDslLabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling.FunctionLibraryDslDescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.outline.FunctionLibraryDslOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.outline.FunctionLibraryDslOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.quickfix.FunctionLibraryDslQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.ContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.FunctionLibraryDslProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.FunctionLibraryDslParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslLexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal.InternalFunctionLibraryDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JdtRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider> bindIRenameStrategy$Provider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureJvmMemberRenameStrategy$Provider$Delegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider.class).annotatedWith(org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.Delegate.class).to(org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategyProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper> bindAbstractAntlrTokenToAttributeIdMapper() {
+		return org.eclipse.xtext.xbase.ui.syntaxcoloring.XbaseTokenToAttributeIdMapper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+		return org.eclipse.xtext.xbase.ui.contentassist.XbaseReferenceProposalCreator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.jface.text.contentassist.IContentAssistProcessor> bindIContentAssistProcessor() {
+		return org.eclipse.xtext.ui.editor.contentassist.RepeatedContentAssistProcessor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
+		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration> bindIHighlightingConfiguration() {
+		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingConfiguration.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider> bindIEObjectHoverProvider() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHover> bindIEObjectHover() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseDispatchingEObjectTextHover.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider.CrossRefResolutionConverter> bindDefaultQuickfixProvider$CrossRefResolutionConverter() {
+		return org.eclipse.xtext.xbase.ui.quickfix.XbaseCrossRefResolutionConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator> bindXbaseUIValidator() {
+		return org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
+		return org.eclipse.xtext.xbase.ui.navigation.TypeLiteralAwareHyperlinkHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.IFeatureScopeTracker.Provider> bindIFeatureScopeTracker$Provider() {
+		return org.eclipse.xtext.xbase.typesystem.internal.OptimizingFeatureScopeTrackerProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler> bindFindReferencesHandler() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelFindReferenceHandler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.ReferenceQueryExecutor> bindReferenceQueryExecutor() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelReferenceQueryExecutor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.xbase.ui.refactoring.XbaseReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameContextFactory> bindIRenameContextFactory() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.refactoring.participant.JdtRenameParticipant.ContextFactory> bindJdtRenameParticipant$ContextFactory() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelJdtRenameParticipantContext.ContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.DefaultJvmModelRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.OutlineNodeElementOpener> bindOutlineNodeElementOpener() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.outline.JvmOutlineNodeElementOpener.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.GlobalURIEditorOpener> bindGlobalURIEditorOpener() {
+		return org.eclipse.xtext.common.types.ui.navigation.GlobalDerivedMemberAwareURIEditorOpener.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.occurrences.IOccurrenceComputer> bindIOccurrenceComputer() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.occurrence.JvmModelOccurrenceComputer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
+		return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.No.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureLanguageSpecificURIEditorOpener(com.google.inject.Binder binder) {
+		if (org.eclipse.ui.PlatformUI.isWorkbenchRunning()) { 
+			binder.bind(org.eclipse.xtext.ui.editor.IURIEditorOpener.class).annotatedWith(org.eclipse.xtext.ui.LanguageSpecific.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
+			binder.bind(org.eclipse.xtext.common.types.ui.navigation.IDerivedMemberAwareEditorOpener.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
+		};
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.jface.text.hyperlink.IHyperlinkDetector> bindIHyperlinkDetector() {
+		return org.eclipse.xtext.xbase.ui.navigation.XbaseHyperlinkDetector.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.imports.IUnresolvedTypeResolver> bindIUnresolvedTypeResolver() {
+		return org.eclipse.xtext.xbase.ui.imports.InteractiveUnresolvedTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
+		return org.eclipse.xtext.xbase.ui.contentassist.ImportingTypesProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends  org.eclipse.xtext.ui.editor.templates.XtextTemplateContextType> bindXtextTemplateContextType() {
+		return org.eclipse.xtext.xbase.ui.templates.XbaseTemplateContextType.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.PartialFunctionLibraryDslContentAssistParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDslExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDslExecutableExtensionFactory.java
new file mode 100644
index 0000000..ac9aae9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDslExecutableExtensionFactory.java
@@ -0,0 +1,40 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.ui.internal.FunctionLibraryDslActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class FunctionLibraryDslExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return FunctionLibraryDslActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return FunctionLibraryDslActivator.getInstance().getInjector(FunctionLibraryDslActivator.ORG_ECLIPSE_OSBP_XTEXT_FUNCTIONLIBRARYDSL_FUNCTIONLIBRARYDSL);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/AbstractFunctionLibraryDslProposalProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/AbstractFunctionLibraryDslProposalProvider.java
new file mode 100644
index 0000000..a9075fa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/AbstractFunctionLibraryDslProposalProvider.java
@@ -0,0 +1,223 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of superclass {@link org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractFunctionLibraryDslProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
+		
+	public void completeFunctionLibraryModel_Pckg(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryPackage_ImportSection(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryPackage_Groups(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor);
+		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor);
+		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(2)), context, acceptor);
+		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(3)), context, acceptor);
+	}
+	public void completeFunctionLibraryPackage_Ratings(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGroup_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGroup_Functions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGroup_Tests(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGroup_Rates(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryBlipGroup_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryBlipGroup_Functions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryBlipGroup_Tests(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryBlipGroup_Rates(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryStatemachineGroup_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryStatemachineGroup_Operations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryStatemachineGroup_Guards(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryStatemachineGroup_Functions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryConverterGroup_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryConverterGroup_ConvertToModelDatatype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryConverterGroup_ConvertToPresentationDatatype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryConverterGroup_ConvertToModel(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryConverterGroup_ConvertToPresentation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionConvertToModel_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionConvertToPresentation_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRating_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRating_Items(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRatingItem_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryFunction_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryFunction_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryFunction_Oftype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryFunction_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryTest_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryTest_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryTest_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRate_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRate_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRate_Oftype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryRate_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGuard_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGuard_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryGuard_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryOperation_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryOperation_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryOperation_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryParameter_ParameterType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFunctionLibraryParameter_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_FunctionLibraryModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryGroup(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryBlipGroup(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryStatemachineGroup(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryConverterGroup(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionConvertToModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionConvertToPresentation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryRating(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryRatingItem(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryTest(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryRate(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryGuard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryOperation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionLibraryParameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TYPE_CROSS_REFERENCE(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
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.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/FunctionLibraryDslParser.java
new file mode 100644
index 0000000..c8efea8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/FunctionLibraryDslParser.java
@@ -0,0 +1,557 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.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;
+
+import com.google.inject.Inject;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+
+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);
+		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.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.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives(), "rule__XAnnotationElementValueOrCommaList__Alternatives");
+					put(grammarAccess.getXAnnotationElementValueAccess().getAlternatives(), "rule__XAnnotationElementValue__Alternatives");
+					put(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives(), "rule__XAnnotationOrExpression__Alternatives");
+					put(grammarAccess.getXAssignmentAccess().getAlternatives(), "rule__XAssignment__Alternatives");
+					put(grammarAccess.getOpMultiAssignAccess().getAlternatives(), "rule__OpMultiAssign__Alternatives");
+					put(grammarAccess.getOpEqualityAccess().getAlternatives(), "rule__OpEquality__Alternatives");
+					put(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1(), "rule__XRelationalExpression__Alternatives_1");
+					put(grammarAccess.getOpCompareAccess().getAlternatives(), "rule__OpCompare__Alternatives");
+					put(grammarAccess.getOpOtherAccess().getAlternatives(), "rule__OpOther__Alternatives");
+					put(grammarAccess.getOpOtherAccess().getAlternatives_5_1(), "rule__OpOther__Alternatives_5_1");
+					put(grammarAccess.getOpOtherAccess().getAlternatives_6_1(), "rule__OpOther__Alternatives_6_1");
+					put(grammarAccess.getOpAddAccess().getAlternatives(), "rule__OpAdd__Alternatives");
+					put(grammarAccess.getOpMultiAccess().getAlternatives(), "rule__OpMulti__Alternatives");
+					put(grammarAccess.getXUnaryOperationAccess().getAlternatives(), "rule__XUnaryOperation__Alternatives");
+					put(grammarAccess.getOpUnaryAccess().getAlternatives(), "rule__OpUnary__Alternatives");
+					put(grammarAccess.getOpPostfixAccess().getAlternatives(), "rule__OpPostfix__Alternatives");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1(), "rule__XMemberFeatureCall__Alternatives_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1(), "rule__XMemberFeatureCall__Alternatives_1_1_3_1");
+					put(grammarAccess.getXPrimaryExpressionAccess().getAlternatives(), "rule__XPrimaryExpression__Alternatives");
+					put(grammarAccess.getXLiteralAccess().getAlternatives(), "rule__XLiteral__Alternatives");
+					put(grammarAccess.getXCollectionLiteralAccess().getAlternatives(), "rule__XCollectionLiteral__Alternatives");
+					put(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2(), "rule__XSwitchExpression__Alternatives_2");
+					put(grammarAccess.getXCasePartAccess().getAlternatives_3(), "rule__XCasePart__Alternatives_3");
+					put(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives(), "rule__XExpressionOrVarDeclaration__Alternatives");
+					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1(), "rule__XVariableDeclaration__Alternatives_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2(), "rule__XVariableDeclaration__Alternatives_2");
+					put(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1(), "rule__XFeatureCall__Alternatives_3_1");
+					put(grammarAccess.getFeatureCallIDAccess().getAlternatives(), "rule__FeatureCallID__Alternatives");
+					put(grammarAccess.getIdOrSuperAccess().getAlternatives(), "rule__IdOrSuper__Alternatives");
+					put(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1(), "rule__XConstructorCall__Alternatives_4_1");
+					put(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1(), "rule__XBooleanLiteral__Alternatives_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3(), "rule__XTryCatchFinallyExpression__Alternatives_3");
+					put(grammarAccess.getNumberAccess().getAlternatives(), "rule__Number__Alternatives");
+					put(grammarAccess.getNumberAccess().getAlternatives_1_0(), "rule__Number__Alternatives_1_0");
+					put(grammarAccess.getNumberAccess().getAlternatives_1_1_1(), "rule__Number__Alternatives_1_1_1");
+					put(grammarAccess.getJvmTypeReferenceAccess().getAlternatives(), "rule__JvmTypeReference__Alternatives");
+					put(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives(), "rule__JvmArgumentTypeReference__Alternatives");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2(), "rule__JvmWildcardTypeReference__Alternatives_2");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1(), "rule__XImportDeclaration__Alternatives_1");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1_0_3(), "rule__XImportDeclaration__Alternatives_1_0_3");
+					put(grammarAccess.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.getFunctionLibraryConverterGroupAccess().getGroup(), "rule__FunctionLibraryConverterGroup__Group__0");
+					put(grammarAccess.getFunctionConvertToModelAccess().getGroup(), "rule__FunctionConvertToModel__Group__0");
+					put(grammarAccess.getFunctionConvertToPresentationAccess().getGroup(), "rule__FunctionConvertToPresentation__Group__0");
+					put(grammarAccess.getFunctionLibraryRatingAccess().getGroup(), "rule__FunctionLibraryRating__Group__0");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getGroup(), "rule__FunctionLibraryFunction__Group__0");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getGroup_3(), "rule__FunctionLibraryFunction__Group_3__0");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getGroup_3_1(), "rule__FunctionLibraryFunction__Group_3_1__0");
+					put(grammarAccess.getFunctionLibraryTestAccess().getGroup(), "rule__FunctionLibraryTest__Group__0");
+					put(grammarAccess.getFunctionLibraryTestAccess().getGroup_3(), "rule__FunctionLibraryTest__Group_3__0");
+					put(grammarAccess.getFunctionLibraryTestAccess().getGroup_3_1(), "rule__FunctionLibraryTest__Group_3_1__0");
+					put(grammarAccess.getFunctionLibraryRateAccess().getGroup(), "rule__FunctionLibraryRate__Group__0");
+					put(grammarAccess.getFunctionLibraryRateAccess().getGroup_3(), "rule__FunctionLibraryRate__Group_3__0");
+					put(grammarAccess.getFunctionLibraryRateAccess().getGroup_3_1(), "rule__FunctionLibraryRate__Group_3_1__0");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getGroup(), "rule__FunctionLibraryGuard__Group__0");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getGroup_3(), "rule__FunctionLibraryGuard__Group_3__0");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getGroup_3_1(), "rule__FunctionLibraryGuard__Group_3_1__0");
+					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.getFunctionLibraryParameterAccess().getGroup(), "rule__FunctionLibraryParameter__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1(), "rule__Number__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1_1(), "rule__Number__Group_1_1__0");
+					put(grammarAccess.getStaticQualifierAccess().getGroup(), "rule__StaticQualifier__Group__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0(), "rule__JvmTypeReference__Group_0__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1(), "rule__JvmTypeReference__Group_0_1__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0(), "rule__JvmTypeReference__Group_0_1_0__0");
+					put(grammarAccess.getArrayBracketsAccess().getGroup(), "rule__ArrayBrackets__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup(), "rule__XFunctionTypeRef__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0(), "rule__XFunctionTypeRef__Group_0__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1(), "rule__XFunctionTypeRef__Group_0_1__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1(), "rule__XFunctionTypeRef__Group_0_1_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup(), "rule__JvmParameterizedTypeReference__Group__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1(), "rule__JvmParameterizedTypeReference__Group_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2(), "rule__JvmParameterizedTypeReference__Group_1_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4(), "rule__JvmParameterizedTypeReference__Group_1_4__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup(), "rule__JvmWildcardTypeReference__Group__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0(), "rule__JvmWildcardTypeReference__Group_2_0__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1(), "rule__JvmWildcardTypeReference__Group_2_1__0");
+					put(grammarAccess.getJvmUpperBoundAccess().getGroup(), "rule__JvmUpperBound__Group__0");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getGroup(), "rule__JvmUpperBoundAnded__Group__0");
+					put(grammarAccess.getJvmLowerBoundAccess().getGroup(), "rule__JvmLowerBound__Group__0");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getGroup(), "rule__JvmLowerBoundAnded__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
+					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_1_0(), "rule__XImportDeclaration__Group_1_0__0");
+					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
+					put(grammarAccess.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.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");
+					put(grammarAccess.getFunctionLibraryGroupAccess().getRatesAssignment_3_2(), "rule__FunctionLibraryGroup__RatesAssignment_3_2");
+					put(grammarAccess.getFunctionLibraryBlipGroupAccess().getNameAssignment_1(), "rule__FunctionLibraryBlipGroup__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsAssignment_3_0(), "rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsAssignment_3_1(), "rule__FunctionLibraryBlipGroup__TestsAssignment_3_1");
+					put(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesAssignment_3_2(), "rule__FunctionLibraryBlipGroup__RatesAssignment_3_2");
+					put(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getNameAssignment_1(), "rule__FunctionLibraryStatemachineGroup__NameAssignment_1");
+					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.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");
+					put(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelAssignment_7(), "rule__FunctionLibraryConverterGroup__ConvertToModelAssignment_7");
+					put(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationAssignment_8(), "rule__FunctionLibraryConverterGroup__ConvertToPresentationAssignment_8");
+					put(grammarAccess.getFunctionConvertToModelAccess().getBodyAssignment_1(), "rule__FunctionConvertToModel__BodyAssignment_1");
+					put(grammarAccess.getFunctionConvertToPresentationAccess().getBodyAssignment_1(), "rule__FunctionConvertToPresentation__BodyAssignment_1");
+					put(grammarAccess.getFunctionLibraryRatingAccess().getNameAssignment_2(), "rule__FunctionLibraryRating__NameAssignment_2");
+					put(grammarAccess.getFunctionLibraryRatingAccess().getItemsAssignment_4(), "rule__FunctionLibraryRating__ItemsAssignment_4");
+					put(grammarAccess.getFunctionLibraryRatingItemAccess().getNameAssignment(), "rule__FunctionLibraryRatingItem__NameAssignment");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getNameAssignment_1(), "rule__FunctionLibraryFunction__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryFunction__ParamsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryFunction__ParamsAssignment_3_1_1");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getOftypeAssignment_6(), "rule__FunctionLibraryFunction__OftypeAssignment_6");
+					put(grammarAccess.getFunctionLibraryFunctionAccess().getBodyAssignment_7(), "rule__FunctionLibraryFunction__BodyAssignment_7");
+					put(grammarAccess.getFunctionLibraryTestAccess().getNameAssignment_1(), "rule__FunctionLibraryTest__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryTestAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryTest__ParamsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryTestAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryTest__ParamsAssignment_3_1_1");
+					put(grammarAccess.getFunctionLibraryTestAccess().getBodyAssignment_5(), "rule__FunctionLibraryTest__BodyAssignment_5");
+					put(grammarAccess.getFunctionLibraryRateAccess().getNameAssignment_1(), "rule__FunctionLibraryRate__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryRateAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryRate__ParamsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryRateAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryRate__ParamsAssignment_3_1_1");
+					put(grammarAccess.getFunctionLibraryRateAccess().getOftypeAssignment_6(), "rule__FunctionLibraryRate__OftypeAssignment_6");
+					put(grammarAccess.getFunctionLibraryRateAccess().getBodyAssignment_7(), "rule__FunctionLibraryRate__BodyAssignment_7");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getNameAssignment_1(), "rule__FunctionLibraryGuard__NameAssignment_1");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getParamsAssignment_3_0(), "rule__FunctionLibraryGuard__ParamsAssignment_3_0");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getParamsAssignment_3_1_1(), "rule__FunctionLibraryGuard__ParamsAssignment_3_1_1");
+					put(grammarAccess.getFunctionLibraryGuardAccess().getBodyAssignment_5(), "rule__FunctionLibraryGuard__BodyAssignment_5");
+					put(grammarAccess.getFunctionLibraryOperationAccess().getNameAssignment_1(), "rule__FunctionLibraryOperation__NameAssignment_1");
+					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.getFunctionLibraryParameterAccess().getParameterTypeAssignment_0(), "rule__FunctionLibraryParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFunctionLibraryParameterAccess().getNameAssignment_1(), "rule__FunctionLibraryParameter__NameAssignment_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.xtext.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.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
new file mode 100644
index 0000000..c0f6b4a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/PartialFunctionLibraryDslContentAssistParser.java
@@ -0,0 +1,49 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/**
+ * @author Sebastian Zarnekow - Initial contribution and API
+ */
+@SuppressWarnings("restriction")
+public class PartialFunctionLibraryDslContentAssistParser extends FunctionLibraryDslParser implements IPartialContentAssistParser {
+
+	private AbstractRule rule;
+
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g
new file mode 100644
index 0000000..780aae7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g
@@ -0,0 +1,10015 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+grammar InternalFunctionLibraryDsl;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.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().getPckgAssignment()); }
+(rule__FunctionLibraryModel__PckgAssignment)
+{ after(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment()); }
+)
+
+;
+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 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 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 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 entryRuleXImportDeclaration
+entryRuleXImportDeclaration 
+:
+{ before(grammarAccess.getXImportDeclarationRule()); }
+	 ruleXImportDeclaration
+{ after(grammarAccess.getXImportDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+(rule__XImportDeclaration__Group__0)
+{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport 
+:
+{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	 ruleQualifiedNameInStaticImport
+{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+(rule__QualifiedNameInStaticImport__Group__0)
+{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+)
+(
+{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+(rule__QualifiedNameInStaticImport__Group__0)*
+{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__FunctionLibraryPackage__Alternatives_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_5_0()); }
+(rule__FunctionLibraryPackage__GroupsAssignment_5_0)
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_5_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_5_1()); }
+(rule__FunctionLibraryPackage__RatingsAssignment_5_1)
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__GroupsAlternatives_5_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0()); }
+	ruleFunctionLibraryGroup
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1()); }
+	ruleFunctionLibraryBlipGroup
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2()); }
+	ruleFunctionLibraryConverterGroup
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3()); }
+	ruleFunctionLibraryStatemachineGroup
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3()); }
+)
+
+;
+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__XAnnotation__Alternatives_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+(rule__XAnnotation__Group_3_1_0__0)
+{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+(rule__XAnnotation__ValueAssignment_3_1_1)
+{ after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+(rule__XAnnotationElementValueOrCommaList__Group_0__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_1__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+(rule__XAnnotationElementValue__Group_0__0)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+	ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationOrExpression__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+	ruleXAnnotation
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+	ruleXExpression
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+(rule__XAssignment__Group_0__0)
+{ after(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+(rule__XAssignment__Group_1__0)
+{ after(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+
+	'+=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+
+	'-=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+
+	'*=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+
+	'/=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+
+	'%=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+(rule__OpMultiAssign__Group_5__0)
+{ after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+(rule__OpMultiAssign__Group_6__0)
+{ after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpEquality__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+
+	'==' 
+
+{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+
+	'!=' 
+
+{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+
+	'===' 
+
+{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+
+	'!==' 
+
+{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+(rule__XRelationalExpression__Group_1_0__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+(rule__XRelationalExpression__Group_1_1__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+
+	'>=' 
+
+{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpCompareAccess().getGroup_1()); }
+(rule__OpCompare__Group_1__0)
+{ after(grammarAccess.getOpCompareAccess().getGroup_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+
+	'>' 
+
+{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+
+	'<' 
+
+{ after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+
+	'->' 
+
+{ after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+
+	'..<' 
+
+{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGroup_2()); }
+(rule__OpOther__Group_2__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+
+	'..' 
+
+{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+
+	'=>' 
+
+{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGroup_5()); }
+(rule__OpOther__Group_5__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGroup_6()); }
+(rule__OpOther__Group_6__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_6()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+
+	'<>' 
+
+{ after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+
+	'?:' 
+
+{ after(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+(rule__OpOther__Group_5_1_0__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+
+	'>' 
+
+{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+(rule__OpOther__Group_6_1_0__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+
+	'<' 
+
+{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+
+	'=>' 
+
+{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpAdd__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMulti__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+
+	'**' 
+
+{ after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+
+	'/' 
+
+{ after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+
+	'%' 
+
+{ after(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+(rule__XUnaryOperation__Group_0__0)
+{ after(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+	ruleXCastedExpression
+{ after(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpUnary__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+
+	'!' 
+
+{ after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+
+	'+' 
+
+{ after(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpPostfix__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+
+	'++' 
+
+{ after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+
+	'--' 
+
+{ after(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+(rule__XMemberFeatureCall__Group_1_0__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+(rule__XMemberFeatureCall__Group_1_1__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+(rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+(rule__XMemberFeatureCall__Group_1_1_3_1_1__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPrimaryExpression__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+	ruleXConstructorCall
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+	ruleXBlockExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+	ruleXSwitchExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+(	ruleXSynchronizedExpression)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+	ruleXFeatureCall
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+	ruleXLiteral
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+	ruleXIfExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+(	ruleXForLoopExpression)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+	ruleXBasicForLoopExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+	ruleXWhileExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+	ruleXDoWhileExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+	ruleXThrowExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+	ruleXReturnExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+	ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+	ruleXParenthesizedExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XLiteral__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+	ruleXCollectionLiteral
+{ after(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+(	ruleXClosure)
+{ after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+	ruleXBooleanLiteral
+{ after(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+	ruleXNumberLiteral
+{ after(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+	ruleXNullLiteral
+{ after(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+	ruleXStringLiteral
+{ after(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+	ruleXTypeLiteral
+{ after(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCollectionLiteral__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+	ruleXSetLiteral
+{ after(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+	ruleXListLiteral
+{ after(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+(rule__XSwitchExpression__Group_2_0__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+(rule__XSwitchExpression__Group_2_1__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Alternatives_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+(rule__XCasePart__Group_3_0__0)
+{ after(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+(rule__XCasePart__FallThroughAssignment_3_1)
+{ after(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionOrVarDeclaration__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+	ruleXVariableDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+	ruleXExpression
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+(rule__XVariableDeclaration__WriteableAssignment_1_0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+
+	'val' 
+
+{ after(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+(rule__XVariableDeclaration__Group_2_0__0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+(rule__XVariableDeclaration__NameAssignment_2_1)
+{ after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Alternatives_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0)
+{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+(rule__XFeatureCall__Group_3_1_1__0)
+{ after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FeatureCallID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+	ruleValidID
+{ after(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+
+	'extends' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+
+	'static' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+
+	'import' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+
+	'extension' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IdOrSuper__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+	ruleFeatureCallID
+{ after(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+
+	'super' 
+
+{ after(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Alternatives_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+(rule__XConstructorCall__ArgumentsAssignment_4_1_0)
+{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+(rule__XConstructorCall__Group_4_1_1__0)
+{ after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+
+	'false' 
+
+{ after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+(rule__XBooleanLiteral__IsTrueAssignment_1_1)
+{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Alternatives_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+(rule__XTryCatchFinallyExpression__Group_3_0__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+(rule__XTryCatchFinallyExpression__Group_3_1__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+	RULE_HEX
+{ after(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNumberAccess().getGroup_1()); }
+(rule__Number__Group_1__0)
+{ after(grammarAccess.getNumberAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+	RULE_INT
+{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+	RULE_DECIMAL
+{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+	RULE_INT
+{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+	RULE_DECIMAL
+{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+(rule__JvmTypeReference__Group_0__0)
+{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+	ruleXFunctionTypeRef
+{ after(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmArgumentTypeReference__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+	ruleJvmTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+	ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+(rule__JvmWildcardTypeReference__Group_2_0__0)
+{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+(rule__JvmWildcardTypeReference__Group_2_1__0)
+{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getGroup_1_0()); }
+(rule__XImportDeclaration__Group_1_0__0)
+{ after(grammarAccess.getXImportDeclarationAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1()); }
+(rule__XImportDeclaration__ImportedTypeAssignment_1_1)
+{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2()); }
+(rule__XImportDeclaration__ImportedNamespaceAssignment_1_2)
+{ after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_1_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0()); }
+(rule__XImportDeclaration__WildcardAssignment_1_0_3_0)
+{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1()); }
+(rule__XImportDeclaration__MemberNameAssignment_1_0_3_1)
+{ after(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__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().getImportSectionAssignment_1()); }
+(rule__FunctionLibraryPackage__ImportSectionAssignment_1)?
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getImportSectionAssignment_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().getPackageKeyword_2()); }
+
+	'package' 
+
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getPackageKeyword_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().getNameAssignment_3()); }
+(rule__FunctionLibraryPackage__NameAssignment_3)
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getNameAssignment_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().getLeftCurlyBracketKeyword_4()); }
+
+	'{' 
+
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getLeftCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryPackage__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FunctionLibraryPackage__Group__5__Impl
+	rule__FunctionLibraryPackage__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getAlternatives_5()); }
+(rule__FunctionLibraryPackage__Alternatives_5)*
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getAlternatives_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FunctionLibraryPackage__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FunctionLibraryPackage__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionLibraryPackage__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionLibraryPackageAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getFunctionLibraryPackageAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+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__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__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__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();
+    }
+:
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.tokens b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.tokens
new file mode 100644
index 0000000..23dae42
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.tokens
@@ -0,0 +1,191 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=74
+'%'=39
+'%='=20
+'&&'=15
+'&'=98
+'('=64
+')'=65
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=67
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=82
+'::'=99
+';'=78
+'<'=27
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=97
+'?.'=100
+'?:'=33
+'@'=72
+'['=75
+']'=73
+'as'=77
+'blip-group'=55
+'case'=84
+'catch'=96
+'converter'=57
+'default'=83
+'do'=87
+'else'=80
+'extends'=45
+'extension'=48
+'false'=50
+'finally'=94
+'for'=85
+'function'=63
+'group'=54
+'guard'=70
+'if'=79
+'import'=47
+'instanceof'=76
+'model-datatype'=58
+'new'=88
+'null'=89
+'operation'=71
+'package'=51
+'presentation-datatype'=59
+'rate'=69
+'rating'=62
+'return'=92
+'returns'=66
+'statemachine'=56
+'static'=46
+'super'=49
+'switch'=81
+'synchronized'=95
+'test'=68
+'throw'=91
+'to-model'=60
+'to-presentation'=61
+'true'=103
+'try'=93
+'typeof'=90
+'val'=44
+'var'=102
+'while'=86
+'{'=52
+'|'=101
+'||'=14
+'}'=53
+RULE_ANY_OTHER=12
+RULE_DECIMAL=7
+RULE_HEX=5
+RULE_ID=4
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=8
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDslLexer.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDslLexer.java
new file mode 100644
index 0000000..b561387
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDslLexer.java
@@ -0,0 +1,4219 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalFunctionLibraryDslLexer extends Lexer {
+    public static final int RULE_HEX=5;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int RULE_INT=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__63=63;
+    public static final int T__64=64;
+    public static final int T__65=65;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__81=81;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+    public InternalFunctionLibraryDslLexer() {;} 
+    public InternalFunctionLibraryDslLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalFunctionLibraryDslLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:11:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:12:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:13:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:14:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:14:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:15:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:15:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:16:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:16:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:17:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:17:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:18:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:18:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:19:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:19:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:20:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:20:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:21:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:21:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:22:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:22:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:23:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:23:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:24:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:24:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:26:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:26:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:27:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:27:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:28:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:28:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:29:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:29:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:30:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:30:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:31:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:31:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:32:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:32:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:33:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:33:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:34:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:34:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:35:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:35:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:36:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:36:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:37:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:37:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:38:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:38:9: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:39:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:39:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:40:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:40:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:41:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:41:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:42:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:42:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:43:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:43:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:44:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:44:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:45:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:45:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:46:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:46:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:47:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:47:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:48:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:48:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:49:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:49:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:50:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:50:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:51:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:51:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:52:7: ( 'group' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:52:9: 'group'
+            {
+            match("group"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:53:7: ( 'blip-group' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:53:9: 'blip-group'
+            {
+            match("blip-group"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:54:7: ( 'statemachine' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:54:9: 'statemachine'
+            {
+            match("statemachine"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:55:7: ( 'converter' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:55:9: 'converter'
+            {
+            match("converter"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:56:7: ( 'model-datatype' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:56:9: 'model-datatype'
+            {
+            match("model-datatype"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:57:7: ( 'presentation-datatype' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:57:9: 'presentation-datatype'
+            {
+            match("presentation-datatype"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:58:7: ( 'to-model' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:58:9: 'to-model'
+            {
+            match("to-model"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:59:7: ( 'to-presentation' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:59:9: 'to-presentation'
+            {
+            match("to-presentation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:60:7: ( 'rating' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:60:9: 'rating'
+            {
+            match("rating"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:61:7: ( 'function' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:61:9: 'function'
+            {
+            match("function"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:62:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:62:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:63:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:63:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:64:7: ( 'returns' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:64:9: 'returns'
+            {
+            match("returns"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:65:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:65:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:66:7: ( 'test' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:66:9: 'test'
+            {
+            match("test"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:67:7: ( 'rate' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:67:9: 'rate'
+            {
+            match("rate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:68:7: ( 'guard' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:68:9: 'guard'
+            {
+            match("guard"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:69:7: ( 'operation' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:69:9: 'operation'
+            {
+            match("operation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:70:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:70:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:71:7: ( ']' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:71:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:72:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:72:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:73:7: ( '[' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:73:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:74:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:74:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:75:7: ( 'as' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:75:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:76:7: ( ';' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:76:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:77:7: ( 'if' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:77:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:78:7: ( 'else' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:78:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:79:7: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:79:9: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:80:7: ( ':' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:80:9: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:81:7: ( 'default' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:81:9: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:82:7: ( 'case' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:82:9: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:83:7: ( 'for' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:83:9: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:84:7: ( 'while' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:84:9: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:85:7: ( 'do' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:85:9: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:86:7: ( 'new' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:86:9: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:87:7: ( 'null' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:87:9: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:88:7: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:88:9: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:89:7: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:89:9: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:90:7: ( 'return' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:90:9: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:91:7: ( 'try' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:91:9: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:92:7: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:92:9: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:93:7: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:93:9: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:94:7: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:94:9: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:95:7: ( '?' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:95:9: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:96:7: ( '&' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:96:9: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:97:7: ( '::' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:97:9: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:98:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:98:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:99:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:99:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:100:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:100:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__102"
+
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:101:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:101:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:12: ( '0x' | '0X' )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='0') ) {
+                int LA1_1 = input.LA(2);
+
+                if ( (LA1_1=='x') ) {
+                    alt1=1;
+                }
+                else if ( (LA1_1=='X') ) {
+                    alt1=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 1, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0=='#') ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0=='B'||LA3_0=='b') ) {
+                        alt3=1;
+                    }
+                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
+                        alt3=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 3, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            {
+                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25554:84: ( 'l' | 'L' )
+                            {
+                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_HEX"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25556:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25556:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25556:21: ( '0' .. '9' | '_' )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')||LA5_0=='_') ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_DECIMAL"
+    public final void mRULE_DECIMAL() throws RecognitionException {
+        try {
+            int _type = RULE_DECIMAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='E'||LA7_0=='e') ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    {
+                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:
+                            {
+                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+                    mRULE_INT(); 
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            int alt8=3;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0=='B'||LA8_0=='b') ) {
+                alt8=1;
+            }
+            else if ( (LA8_0=='D'||LA8_0=='F'||LA8_0=='L'||LA8_0=='d'||LA8_0=='f'||LA8_0=='l') ) {
+                alt8=2;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    {
+                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25558:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    {
+                    if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_DECIMAL"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25560:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25560:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25560:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25560:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25560:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='\"') ) {
+                alt15=1;
+            }
+            else if ( (LA15_0=='\'') ) {
+                alt15=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop11:
+                    do {
+                        int alt11=3;
+                        int LA11_0 = input.LA(1);
+
+                        if ( (LA11_0=='\\') ) {
+                            alt11=1;
+                        }
+                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
+                            alt11=2;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop13:
+                    do {
+                        int alt13=3;
+                        int LA13_0 = input.LA(1);
+
+                        if ( (LA13_0=='\\') ) {
+                            alt13=1;
+                        }
+                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+                            alt13=2;
+                        }
+
+
+                        switch (alt13) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop13;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25562:79: '\\''
+                            {
+                            match('\''); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25564:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25564:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25564:24: ( options {greedy=false; } : . )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( (LA16_0=='*') ) {
+                    int LA16_1 = input.LA(2);
+
+                    if ( (LA16_1=='/') ) {
+                        alt16=2;
+                    }
+                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
+                        alt16=1;
+                    }
+
+
+                }
+                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25564:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:40: ( ( '\\r' )? '\\n' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25566:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25568:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25568:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25568:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt20=0;
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt20 >= 1 ) break loop20;
+                        EarlyExitException eee =
+                            new EarlyExitException(20, input);
+                        throw eee;
+                }
+                cnt20++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25570:16: ( . )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:25570:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=100;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:560: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:569: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:578: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:591: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:599: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:611: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:627: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:643: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1:651: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\64\1\66\1\70\1\73\1\77\1\102\1\106\1\110\1\112\1\114"+
+        "\1\116\1\120\1\123\6\125\2\uffff\6\125\3\uffff\1\125\4\uffff\1\125"+
+        "\1\uffff\1\177\3\125\2\u0087\1\61\5\uffff\1\u008c\26\uffff\1\u008e"+
+        "\5\uffff\1\u0090\4\uffff\1\125\1\uffff\10\125\1\u009b\6\125\2\uffff"+
+        "\15\125\3\uffff\1\125\4\uffff\1\u00b2\3\uffff\1\125\1\u00b4\3\125"+
+        "\1\uffff\1\u0087\12\uffff\1\u00b8\1\u00b9\10\125\1\uffff\2\125\1"+
+        "\u00c4\12\125\1\uffff\3\125\1\u00d4\4\125\1\uffff\1\125\1\uffff"+
+        "\1\125\1\u00dc\1\125\2\uffff\1\125\1\u00df\10\125\1\uffff\7\125"+
+        "\1\u00f0\2\125\2\uffff\1\u00f3\2\125\1\uffff\1\u00f6\1\125\1\u00f8"+
+        "\4\125\1\uffff\1\u00fd\1\125\1\uffff\2\125\1\u0102\4\125\1\u0107"+
+        "\4\125\1\u010c\1\u010d\1\uffff\1\125\1\uffff\1\u010f\1\125\1\uffff"+
+        "\1\125\1\u0112\1\uffff\1\125\1\uffff\3\125\1\u0117\1\uffff\2\125"+
+        "\1\u011a\1\125\1\uffff\1\u011c\1\125\1\u011e\1\125\1\uffff\4\125"+
+        "\2\uffff\1\125\2\uffff\1\u0125\1\uffff\1\u0126\1\u0128\2\125\1\uffff"+
+        "\1\u012b\1\125\1\uffff\1\125\1\uffff\1\125\1\uffff\2\125\1\u0131"+
+        "\1\u0132\2\125\2\uffff\1\u0135\1\uffff\1\125\1\u0137\1\uffff\4\125"+
+        "\1\u013c\2\uffff\2\125\1\uffff\1\125\1\uffff\1\u0140\3\125\1\uffff"+
+        "\1\125\1\u0145\1\u0146\1\uffff\2\125\1\u0149\1\125\2\uffff\2\125"+
+        "\1\uffff\1\125\1\u014e\1\u014f\1\125\3\uffff";
+    static final String DFA21_eofS =
+        "\u0151\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154"+
+        "\1\164\1\146\2\141\2\uffff\1\162\1\154\1\141\1\157\1\145\1\141\3"+
+        "\uffff\1\160\4\uffff\1\163\1\uffff\1\72\1\145\1\150\1\145\2\60\1"+
+        "\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff"+
+        "\1\164\1\163\1\141\1\160\1\151\1\156\1\160\1\163\1\44\1\154\1\156"+
+        "\1\162\1\156\1\143\1\145\2\uffff\1\157\1\141\1\151\1\156\1\163\1"+
+        "\144\1\55\1\163\1\160\1\162\1\165\2\164\3\uffff\1\145\4\uffff\1"+
+        "\44\3\uffff\1\146\1\44\1\151\1\167\1\154\1\uffff\1\60\12\uffff\2"+
+        "\44\2\145\1\164\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\143"+
+        "\1\44\1\141\1\153\1\163\1\165\1\162\1\160\1\166\1\145\1\143\1\145"+
+        "\1\155\1\164\1\145\1\157\1\44\2\145\1\165\1\162\1\uffff\1\141\1"+
+        "\uffff\1\154\1\44\1\154\2\uffff\1\156\1\44\1\145\1\162\1\143\1\150"+
+        "\1\162\1\141\1\145\1\164\1\uffff\1\154\1\141\1\145\1\160\1\144\1"+
+        "\55\1\145\1\44\1\150\1\154\2\uffff\1\44\1\157\1\167\1\uffff\1\44"+
+        "\1\156\1\44\1\162\1\141\1\165\1\145\1\uffff\1\44\1\144\1\uffff\1"+
+        "\143\1\155\1\44\1\150\1\162\1\164\1\156\1\44\1\151\1\154\1\147\1"+
+        "\156\2\44\1\uffff\1\162\1\uffff\1\44\1\55\1\uffff\1\146\1\44\1\uffff"+
+        "\1\147\1\uffff\1\156\1\164\1\154\1\44\1\uffff\1\163\1\151\1\44\1"+
+        "\141\1\uffff\1\44\1\157\1\44\1\143\1\uffff\1\157\1\171\1\145\1\164"+
+        "\2\uffff\1\164\2\uffff\1\44\1\uffff\2\44\1\151\1\164\1\uffff\1\44"+
+        "\1\157\1\uffff\1\143\1\uffff\1\156\1\uffff\1\145\1\156\2\44\1\141"+
+        "\1\145\2\uffff\1\44\1\uffff\1\157\1\44\1\uffff\1\156\1\150\1\151"+
+        "\1\157\1\44\2\uffff\1\164\1\162\1\uffff\1\156\1\uffff\1\44\1\151"+
+        "\1\172\1\146\1\uffff\1\151\2\44\1\uffff\1\156\1\145\1\44\1\157\2"+
+        "\uffff\1\145\1\144\1\uffff\1\156\2\44\1\55\3\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1"+
+        "\170\1\171\1\156\1\165\1\162\2\uffff\1\165\1\154\2\157\1\171\1\145"+
+        "\3\uffff\1\160\4\uffff\1\163\1\uffff\1\72\1\157\1\150\1\165\1\170"+
+        "\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162"+
+        "\1\uffff\1\164\1\163\1\141\1\160\1\151\1\156\1\160\1\163\1\172\1"+
+        "\154\1\156\1\162\1\156\1\143\1\145\2\uffff\1\157\1\141\1\151\1\156"+
+        "\1\164\1\144\1\55\1\163\1\160\1\162\1\171\2\164\3\uffff\1\145\4"+
+        "\uffff\1\172\3\uffff\1\146\1\172\1\151\1\167\1\154\1\uffff\1\154"+
+        "\12\uffff\2\172\2\145\1\164\1\145\1\164\1\143\1\157\1\164\1\uffff"+
+        "\1\163\1\143\1\172\1\141\1\153\1\163\1\165\1\162\1\160\1\166\1\145"+
+        "\1\143\1\145\1\160\1\164\1\145\1\157\1\172\1\145\1\151\1\165\1\162"+
+        "\1\uffff\1\141\1\uffff\1\154\1\172\1\154\2\uffff\1\156\1\172\1\151"+
+        "\1\162\1\143\1\150\1\162\1\141\1\145\1\164\1\uffff\1\154\1\141\1"+
+        "\145\1\160\1\144\1\55\1\145\1\172\1\150\1\154\2\uffff\1\172\1\157"+
+        "\1\167\1\uffff\1\172\1\156\1\172\1\162\1\141\1\165\1\145\1\uffff"+
+        "\1\172\1\163\1\uffff\1\143\1\155\1\172\1\150\1\162\1\164\1\156\1"+
+        "\172\1\151\1\154\1\147\1\156\2\172\1\uffff\1\162\1\uffff\1\172\1"+
+        "\55\1\uffff\1\146\1\172\1\uffff\1\147\1\uffff\1\156\1\164\1\154"+
+        "\1\172\1\uffff\1\163\1\151\1\172\1\141\1\uffff\1\172\1\157\1\172"+
+        "\1\143\1\uffff\1\157\1\171\1\145\1\164\2\uffff\1\164\2\uffff\1\172"+
+        "\1\uffff\2\172\1\151\1\164\1\uffff\1\172\1\157\1\uffff\1\143\1\uffff"+
+        "\1\156\1\uffff\1\145\1\156\2\172\1\141\1\145\2\uffff\1\172\1\uffff"+
+        "\1\157\1\172\1\uffff\1\156\1\150\1\151\1\157\1\172\2\uffff\1\164"+
+        "\1\162\1\uffff\1\156\1\uffff\1\172\1\151\1\172\1\146\1\uffff\1\151"+
+        "\2\172\1\uffff\1\156\1\145\1\172\1\157\2\uffff\1\145\1\144\1\uffff"+
+        "\1\156\2\172\1\55\3\uffff";
+    static final String DFA21_acceptS =
+        "\24\uffff\1\50\1\51\6\uffff\1\64\1\65\1\67\1\uffff\1\74\1\75\1"+
+        "\76\1\77\1\uffff\1\102\7\uffff\1\137\2\140\1\143\1\144\1\uffff\1"+
+        "\23\1\1\1\2\1\131\1\3\1\126\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6"+
+        "\1\31\1\30\1\7\1\141\1\142\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16"+
+        "\1\24\1\17\1\uffff\1\37\1\25\1\130\1\125\1\uffff\1\137\17\uffff"+
+        "\1\50\1\51\15\uffff\1\64\1\65\1\67\1\uffff\1\74\1\75\1\76\1\77\1"+
+        "\uffff\1\102\1\127\1\106\5\uffff\1\134\1\uffff\1\135\1\136\1\140"+
+        "\1\143\1\13\1\11\1\14\1\12\1\21\1\22\12\uffff\1\103\26\uffff\1\101"+
+        "\1\uffff\1\113\3\uffff\1\40\1\132\12\uffff\1\111\12\uffff\1\60\1"+
+        "\61\3\uffff\1\121\7\uffff\1\114\2\uffff\1\104\16\uffff\1\53\1\uffff"+
+        "\1\110\2\uffff\1\70\2\uffff\1\133\1\uffff\1\71\4\uffff\1\115\4\uffff"+
+        "\1\45\4\uffff\1\46\4\uffff\1\52\1\72\1\uffff\1\124\1\56\1\uffff"+
+        "\1\117\4\uffff\1\112\2\uffff\1\42\1\uffff\1\105\1\uffff\1\43\6\uffff"+
+        "\1\116\1\62\1\uffff\1\120\2\uffff\1\41\5\uffff\1\122\1\47\2\uffff"+
+        "\1\66\1\uffff\1\107\4\uffff\1\63\3\uffff\1\44\4\uffff\1\55\1\73"+
+        "\2\uffff\1\100\4\uffff\1\54\1\123\1\57";
+    static final String DFA21_specialS =
+        "\1\0\u0150\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\61\2\60\2\61\1\60\22\61\1\60\1\11\1\56\1\42\1\55\1\10\1"+
+            "\3\1\57\1\34\1\35\1\6\1\4\1\36\1\5\1\14\1\7\1\52\11\53\1\46"+
+            "\1\45\1\13\1\1\1\12\1\15\1\40\32\55\1\43\1\61\1\41\1\54\1\55"+
+            "\1\61\1\44\1\27\1\30\1\47\1\17\1\22\1\26\1\55\1\21\3\55\1\31"+
+            "\1\51\1\37\1\23\1\55\1\33\1\20\1\32\1\55\1\16\1\50\3\55\1\24"+
+            "\1\2\1\25\uff82\61",
+            "\1\62\1\63",
+            "\1\65",
+            "\1\67",
+            "\1\72\21\uffff\1\71",
+            "\1\76\17\uffff\1\74\1\75",
+            "\1\101\22\uffff\1\100",
+            "\1\104\4\uffff\1\105\15\uffff\1\103",
+            "\1\107",
+            "\1\111",
+            "\1\113",
+            "\1\115",
+            "\1\117",
+            "\1\122\13\uffff\1\121",
+            "\1\124",
+            "\1\127\13\uffff\1\126",
+            "\1\130\1\131\1\uffff\1\132\1\uffff\1\133",
+            "\1\136\6\uffff\1\134\1\135",
+            "\1\137\7\uffff\1\142\5\uffff\1\141\5\uffff\1\140",
+            "\1\143\20\uffff\1\144",
+            "",
+            "",
+            "\1\147\2\uffff\1\150",
+            "\1\151",
+            "\1\153\15\uffff\1\152",
+            "\1\154",
+            "\1\156\2\uffff\1\160\6\uffff\1\155\2\uffff\1\161\6\uffff\1"+
+            "\157",
+            "\1\162\3\uffff\1\163",
+            "",
+            "",
+            "",
+            "\1\167",
+            "",
+            "",
+            "",
+            "",
+            "\1\174",
+            "",
+            "\1\176",
+            "\1\u0080\11\uffff\1\u0081",
+            "\1\u0082",
+            "\1\u0083\17\uffff\1\u0084",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088"+
+            "\13\uffff\1\u0085\6\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3"+
+            "\u0088\5\uffff\1\u0088\13\uffff\1\u0085",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088"+
+            "\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1"+
+            "\u0088",
+            "\1\125\34\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u008b",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u008d",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u008f",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0091\5\uffff\1\u0092",
+            "",
+            "\1\u0093",
+            "\1\u0094",
+            "\1\u0095",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\1\u0099",
+            "\1\u009a",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "\1\u009f",
+            "\1\u00a0",
+            "\1\u00a1",
+            "",
+            "",
+            "\1\u00a2",
+            "\1\u00a3",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6\1\u00a7",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00aa",
+            "\1\u00ab",
+            "\1\u00ac",
+            "\1\u00ae\3\uffff\1\u00ad",
+            "\1\u00af",
+            "\1\u00b0",
+            "",
+            "",
+            "",
+            "\1\u00b1",
+            "",
+            "",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "",
+            "",
+            "\1\u00b3",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088"+
+            "\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1"+
+            "\u0088",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf\2\uffff\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00d5",
+            "\1\u00d7\3\uffff\1\u00d6",
+            "\1\u00d8",
+            "\1\u00d9",
+            "",
+            "\1\u00da",
+            "",
+            "\1\u00db",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00dd",
+            "",
+            "",
+            "\1\u00de",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00e1\3\uffff\1\u00e0",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00f1",
+            "\1\u00f2",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00f4",
+            "\1\u00f5",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00f7",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u00fe\16\uffff\1\u00ff",
+            "",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\u010e",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u0110",
+            "",
+            "\1\u0111",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\u0113",
+            "",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u011b",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u011d",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u011f",
+            "",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "",
+            "",
+            "\1\u0124",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\22\125\1\u0127\7\125",
+            "\1\u0129",
+            "\1\u012a",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u012c",
+            "",
+            "\1\u012d",
+            "",
+            "\1\u012e",
+            "",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u0133",
+            "\1\u0134",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\u0136",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "",
+            "\1\u013d",
+            "\1\u013e",
+            "",
+            "\1\u013f",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "",
+            "\1\u0144",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u014a",
+            "",
+            "",
+            "\1\u014b",
+            "\1\u014c",
+            "",
+            "\1\u014d",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff"+
+            "\32\125",
+            "\1\u0150",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='=') ) {s = 1;}
+
+                        else if ( (LA21_0=='|') ) {s = 2;}
+
+                        else if ( (LA21_0=='&') ) {s = 3;}
+
+                        else if ( (LA21_0=='+') ) {s = 4;}
+
+                        else if ( (LA21_0=='-') ) {s = 5;}
+
+                        else if ( (LA21_0=='*') ) {s = 6;}
+
+                        else if ( (LA21_0=='/') ) {s = 7;}
+
+                        else if ( (LA21_0=='%') ) {s = 8;}
+
+                        else if ( (LA21_0=='!') ) {s = 9;}
+
+                        else if ( (LA21_0=='>') ) {s = 10;}
+
+                        else if ( (LA21_0=='<') ) {s = 11;}
+
+                        else if ( (LA21_0=='.') ) {s = 12;}
+
+                        else if ( (LA21_0=='?') ) {s = 13;}
+
+                        else if ( (LA21_0=='v') ) {s = 14;}
+
+                        else if ( (LA21_0=='e') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0=='i') ) {s = 17;}
+
+                        else if ( (LA21_0=='f') ) {s = 18;}
+
+                        else if ( (LA21_0=='p') ) {s = 19;}
+
+                        else if ( (LA21_0=='{') ) {s = 20;}
+
+                        else if ( (LA21_0=='}') ) {s = 21;}
+
+                        else if ( (LA21_0=='g') ) {s = 22;}
+
+                        else if ( (LA21_0=='b') ) {s = 23;}
+
+                        else if ( (LA21_0=='c') ) {s = 24;}
+
+                        else if ( (LA21_0=='m') ) {s = 25;}
+
+                        else if ( (LA21_0=='t') ) {s = 26;}
+
+                        else if ( (LA21_0=='r') ) {s = 27;}
+
+                        else if ( (LA21_0=='(') ) {s = 28;}
+
+                        else if ( (LA21_0==')') ) {s = 29;}
+
+                        else if ( (LA21_0==',') ) {s = 30;}
+
+                        else if ( (LA21_0=='o') ) {s = 31;}
+
+                        else if ( (LA21_0=='@') ) {s = 32;}
+
+                        else if ( (LA21_0==']') ) {s = 33;}
+
+                        else if ( (LA21_0=='#') ) {s = 34;}
+
+                        else if ( (LA21_0=='[') ) {s = 35;}
+
+                        else if ( (LA21_0=='a') ) {s = 36;}
+
+                        else if ( (LA21_0==';') ) {s = 37;}
+
+                        else if ( (LA21_0==':') ) {s = 38;}
+
+                        else if ( (LA21_0=='d') ) {s = 39;}
+
+                        else if ( (LA21_0=='w') ) {s = 40;}
+
+                        else if ( (LA21_0=='n') ) {s = 41;}
+
+                        else if ( (LA21_0=='0') ) {s = 42;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 43;}
+
+                        else if ( (LA21_0=='^') ) {s = 44;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='h'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 45;}
+
+                        else if ( (LA21_0=='\"') ) {s = 46;}
+
+                        else if ( (LA21_0=='\'') ) {s = 47;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 48;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 49;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDslParser.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDslParser.java
new file mode 100644
index 0000000..8451050
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDslParser.java
@@ -0,0 +1,10015 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+@SuppressWarnings("all")
+public class InternalFunctionLibraryDslParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'package'", "'{'", "'}'", "'group'", "'blip-group'", "'statemachine'", "'converter'", "'model-datatype'", "'presentation-datatype'", "'to-model'", "'to-presentation'", "'rating'", "'function'", "'('", "')'", "'returns'", "','", "'test'", "'rate'", "'guard'", "'operation'", "'@'", "']'", "'#'", "'['", "'instanceof'", "'as'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int RULE_HEX=5;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int RULE_INT=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__63=63;
+    public static final int T__64=64;
+    public static final int T__65=65;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__81=81;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+
+        public InternalFunctionLibraryDslParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalFunctionLibraryDslParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalFunctionLibraryDslParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g"; }
+
+
+     
+     	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;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleFunctionLibraryModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:61:1: entryRuleFunctionLibraryModel : ruleFunctionLibraryModel EOF ;
+    public final void entryRuleFunctionLibraryModel() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:62:1: ( ruleFunctionLibraryModel EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:63:1: ruleFunctionLibraryModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryModel_in_entryRuleFunctionLibraryModel67);
+            ruleFunctionLibraryModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryModelRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryModel74); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryModel"
+
+
+    // $ANTLR start "ruleFunctionLibraryModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:70:1: ruleFunctionLibraryModel : ( ( rule__FunctionLibraryModel__PckgAssignment ) ) ;
+    public final void ruleFunctionLibraryModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:74:2: ( ( ( rule__FunctionLibraryModel__PckgAssignment ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:75:1: ( ( rule__FunctionLibraryModel__PckgAssignment ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:75:1: ( ( rule__FunctionLibraryModel__PckgAssignment ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:76:1: ( rule__FunctionLibraryModel__PckgAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:77:1: ( rule__FunctionLibraryModel__PckgAssignment )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:77:2: rule__FunctionLibraryModel__PckgAssignment
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryModel__PckgAssignment_in_ruleFunctionLibraryModel100);
+            rule__FunctionLibraryModel__PckgAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryModelAccess().getPckgAssignment()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryModel"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryPackage"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:89:1: entryRuleFunctionLibraryPackage : ruleFunctionLibraryPackage EOF ;
+    public final void entryRuleFunctionLibraryPackage() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:90:1: ( ruleFunctionLibraryPackage EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:91:1: ruleFunctionLibraryPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryPackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryPackage_in_entryRuleFunctionLibraryPackage127);
+            ruleFunctionLibraryPackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryPackageRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryPackage134); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryPackage"
+
+
+    // $ANTLR start "ruleFunctionLibraryPackage"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:98:1: ruleFunctionLibraryPackage : ( ( rule__FunctionLibraryPackage__Group__0 ) ) ;
+    public final void ruleFunctionLibraryPackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:102:2: ( ( ( rule__FunctionLibraryPackage__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:103:1: ( ( rule__FunctionLibraryPackage__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:103:1: ( ( rule__FunctionLibraryPackage__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:104:1: ( rule__FunctionLibraryPackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryPackageAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:105:1: ( rule__FunctionLibraryPackage__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:105:2: rule__FunctionLibraryPackage__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryPackage__Group__0_in_ruleFunctionLibraryPackage160);
+            rule__FunctionLibraryPackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryPackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryPackage"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:117:1: entryRuleFunctionLibraryGroup : ruleFunctionLibraryGroup EOF ;
+    public final void entryRuleFunctionLibraryGroup() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:118:1: ( ruleFunctionLibraryGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:119:1: ruleFunctionLibraryGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryGroup_in_entryRuleFunctionLibraryGroup187);
+            ruleFunctionLibraryGroup();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryGroupRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryGroup194); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:126:1: ruleFunctionLibraryGroup : ( ( rule__FunctionLibraryGroup__Group__0 ) ) ;
+    public final void ruleFunctionLibraryGroup() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:130:2: ( ( ( rule__FunctionLibraryGroup__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:131:1: ( ( rule__FunctionLibraryGroup__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:131:1: ( ( rule__FunctionLibraryGroup__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:132:1: ( rule__FunctionLibraryGroup__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryGroupAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:133:1: ( rule__FunctionLibraryGroup__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:133:2: rule__FunctionLibraryGroup__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryGroup__Group__0_in_ruleFunctionLibraryGroup220);
+            rule__FunctionLibraryGroup__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryGroupAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryGroup"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryBlipGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:145:1: entryRuleFunctionLibraryBlipGroup : ruleFunctionLibraryBlipGroup EOF ;
+    public final void entryRuleFunctionLibraryBlipGroup() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:146:1: ( ruleFunctionLibraryBlipGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:147:1: ruleFunctionLibraryBlipGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryBlipGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryBlipGroup_in_entryRuleFunctionLibraryBlipGroup247);
+            ruleFunctionLibraryBlipGroup();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryBlipGroupRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryBlipGroup254); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryBlipGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryBlipGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:154:1: ruleFunctionLibraryBlipGroup : ( ( rule__FunctionLibraryBlipGroup__Group__0 ) ) ;
+    public final void ruleFunctionLibraryBlipGroup() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:158:2: ( ( ( rule__FunctionLibraryBlipGroup__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:159:1: ( ( rule__FunctionLibraryBlipGroup__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:159:1: ( ( rule__FunctionLibraryBlipGroup__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:160:1: ( rule__FunctionLibraryBlipGroup__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryBlipGroupAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:161:1: ( rule__FunctionLibraryBlipGroup__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:161:2: rule__FunctionLibraryBlipGroup__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryBlipGroup__Group__0_in_ruleFunctionLibraryBlipGroup280);
+            rule__FunctionLibraryBlipGroup__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryBlipGroupAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryBlipGroup"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryStatemachineGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:173:1: entryRuleFunctionLibraryStatemachineGroup : ruleFunctionLibraryStatemachineGroup EOF ;
+    public final void entryRuleFunctionLibraryStatemachineGroup() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:174:1: ( ruleFunctionLibraryStatemachineGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:175:1: ruleFunctionLibraryStatemachineGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryStatemachineGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryStatemachineGroup_in_entryRuleFunctionLibraryStatemachineGroup307);
+            ruleFunctionLibraryStatemachineGroup();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryStatemachineGroupRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryStatemachineGroup314); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryStatemachineGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryStatemachineGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:182:1: ruleFunctionLibraryStatemachineGroup : ( ( rule__FunctionLibraryStatemachineGroup__Group__0 ) ) ;
+    public final void ruleFunctionLibraryStatemachineGroup() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:186:2: ( ( ( rule__FunctionLibraryStatemachineGroup__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:187:1: ( ( rule__FunctionLibraryStatemachineGroup__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:187:1: ( ( rule__FunctionLibraryStatemachineGroup__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:188:1: ( rule__FunctionLibraryStatemachineGroup__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:189:1: ( rule__FunctionLibraryStatemachineGroup__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:189:2: rule__FunctionLibraryStatemachineGroup__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryStatemachineGroup__Group__0_in_ruleFunctionLibraryStatemachineGroup340);
+            rule__FunctionLibraryStatemachineGroup__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryStatemachineGroup"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryConverterGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:201:1: entryRuleFunctionLibraryConverterGroup : ruleFunctionLibraryConverterGroup EOF ;
+    public final void entryRuleFunctionLibraryConverterGroup() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:202:1: ( ruleFunctionLibraryConverterGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:203:1: ruleFunctionLibraryConverterGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryConverterGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryConverterGroup_in_entryRuleFunctionLibraryConverterGroup367);
+            ruleFunctionLibraryConverterGroup();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryConverterGroupRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryConverterGroup374); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryConverterGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryConverterGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:210:1: ruleFunctionLibraryConverterGroup : ( ( rule__FunctionLibraryConverterGroup__Group__0 ) ) ;
+    public final void ruleFunctionLibraryConverterGroup() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:214:2: ( ( ( rule__FunctionLibraryConverterGroup__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:215:1: ( ( rule__FunctionLibraryConverterGroup__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:215:1: ( ( rule__FunctionLibraryConverterGroup__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:216:1: ( rule__FunctionLibraryConverterGroup__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryConverterGroupAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:217:1: ( rule__FunctionLibraryConverterGroup__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:217:2: rule__FunctionLibraryConverterGroup__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryConverterGroup__Group__0_in_ruleFunctionLibraryConverterGroup400);
+            rule__FunctionLibraryConverterGroup__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryConverterGroupAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryConverterGroup"
+
+
+    // $ANTLR start "entryRuleFunctionConvertToModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:229:1: entryRuleFunctionConvertToModel : ruleFunctionConvertToModel EOF ;
+    public final void entryRuleFunctionConvertToModel() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:230:1: ( ruleFunctionConvertToModel EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:231:1: ruleFunctionConvertToModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionConvertToModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionConvertToModel_in_entryRuleFunctionConvertToModel427);
+            ruleFunctionConvertToModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionConvertToModelRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionConvertToModel434); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionConvertToModel"
+
+
+    // $ANTLR start "ruleFunctionConvertToModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:238:1: ruleFunctionConvertToModel : ( ( rule__FunctionConvertToModel__Group__0 ) ) ;
+    public final void ruleFunctionConvertToModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:242:2: ( ( ( rule__FunctionConvertToModel__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:243:1: ( ( rule__FunctionConvertToModel__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:243:1: ( ( rule__FunctionConvertToModel__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:244:1: ( rule__FunctionConvertToModel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionConvertToModelAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:245:1: ( rule__FunctionConvertToModel__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:245:2: rule__FunctionConvertToModel__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionConvertToModel__Group__0_in_ruleFunctionConvertToModel460);
+            rule__FunctionConvertToModel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionConvertToModelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionConvertToModel"
+
+
+    // $ANTLR start "entryRuleFunctionConvertToPresentation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:257:1: entryRuleFunctionConvertToPresentation : ruleFunctionConvertToPresentation EOF ;
+    public final void entryRuleFunctionConvertToPresentation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:258:1: ( ruleFunctionConvertToPresentation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:259:1: ruleFunctionConvertToPresentation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionConvertToPresentationRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionConvertToPresentation_in_entryRuleFunctionConvertToPresentation487);
+            ruleFunctionConvertToPresentation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionConvertToPresentationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionConvertToPresentation494); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionConvertToPresentation"
+
+
+    // $ANTLR start "ruleFunctionConvertToPresentation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:266:1: ruleFunctionConvertToPresentation : ( ( rule__FunctionConvertToPresentation__Group__0 ) ) ;
+    public final void ruleFunctionConvertToPresentation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:270:2: ( ( ( rule__FunctionConvertToPresentation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:271:1: ( ( rule__FunctionConvertToPresentation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:271:1: ( ( rule__FunctionConvertToPresentation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:272:1: ( rule__FunctionConvertToPresentation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionConvertToPresentationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:273:1: ( rule__FunctionConvertToPresentation__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:273:2: rule__FunctionConvertToPresentation__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionConvertToPresentation__Group__0_in_ruleFunctionConvertToPresentation520);
+            rule__FunctionConvertToPresentation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionConvertToPresentationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionConvertToPresentation"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryRating"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:285:1: entryRuleFunctionLibraryRating : ruleFunctionLibraryRating EOF ;
+    public final void entryRuleFunctionLibraryRating() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:286:1: ( ruleFunctionLibraryRating EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:287:1: ruleFunctionLibraryRating EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryRatingRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryRating_in_entryRuleFunctionLibraryRating547);
+            ruleFunctionLibraryRating();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryRatingRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryRating554); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryRating"
+
+
+    // $ANTLR start "ruleFunctionLibraryRating"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:294:1: ruleFunctionLibraryRating : ( ( rule__FunctionLibraryRating__Group__0 ) ) ;
+    public final void ruleFunctionLibraryRating() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:298:2: ( ( ( rule__FunctionLibraryRating__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:299:1: ( ( rule__FunctionLibraryRating__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:299:1: ( ( rule__FunctionLibraryRating__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:300:1: ( rule__FunctionLibraryRating__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryRatingAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:301:1: ( rule__FunctionLibraryRating__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:301:2: rule__FunctionLibraryRating__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryRating__Group__0_in_ruleFunctionLibraryRating580);
+            rule__FunctionLibraryRating__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryRatingAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryRating"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryRatingItem"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:313:1: entryRuleFunctionLibraryRatingItem : ruleFunctionLibraryRatingItem EOF ;
+    public final void entryRuleFunctionLibraryRatingItem() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:314:1: ( ruleFunctionLibraryRatingItem EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:315:1: ruleFunctionLibraryRatingItem EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryRatingItemRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryRatingItem_in_entryRuleFunctionLibraryRatingItem607);
+            ruleFunctionLibraryRatingItem();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryRatingItemRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryRatingItem614); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryRatingItem"
+
+
+    // $ANTLR start "ruleFunctionLibraryRatingItem"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:322:1: ruleFunctionLibraryRatingItem : ( ( rule__FunctionLibraryRatingItem__NameAssignment ) ) ;
+    public final void ruleFunctionLibraryRatingItem() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:326:2: ( ( ( rule__FunctionLibraryRatingItem__NameAssignment ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:327:1: ( ( rule__FunctionLibraryRatingItem__NameAssignment ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:327:1: ( ( rule__FunctionLibraryRatingItem__NameAssignment ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:328:1: ( rule__FunctionLibraryRatingItem__NameAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryRatingItemAccess().getNameAssignment()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:329:1: ( rule__FunctionLibraryRatingItem__NameAssignment )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:329:2: rule__FunctionLibraryRatingItem__NameAssignment
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryRatingItem__NameAssignment_in_ruleFunctionLibraryRatingItem640);
+            rule__FunctionLibraryRatingItem__NameAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryRatingItemAccess().getNameAssignment()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryRatingItem"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryFunction"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:341:1: entryRuleFunctionLibraryFunction : ruleFunctionLibraryFunction EOF ;
+    public final void entryRuleFunctionLibraryFunction() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:342:1: ( ruleFunctionLibraryFunction EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:343:1: ruleFunctionLibraryFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryFunction_in_entryRuleFunctionLibraryFunction667);
+            ruleFunctionLibraryFunction();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryFunctionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryFunction674); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryFunction"
+
+
+    // $ANTLR start "ruleFunctionLibraryFunction"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:350:1: ruleFunctionLibraryFunction : ( ( rule__FunctionLibraryFunction__Group__0 ) ) ;
+    public final void ruleFunctionLibraryFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:354:2: ( ( ( rule__FunctionLibraryFunction__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:355:1: ( ( rule__FunctionLibraryFunction__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:355:1: ( ( rule__FunctionLibraryFunction__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:356:1: ( rule__FunctionLibraryFunction__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryFunctionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:357:1: ( rule__FunctionLibraryFunction__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:357:2: rule__FunctionLibraryFunction__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryFunction__Group__0_in_ruleFunctionLibraryFunction700);
+            rule__FunctionLibraryFunction__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryFunctionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryFunction"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryTest"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:369:1: entryRuleFunctionLibraryTest : ruleFunctionLibraryTest EOF ;
+    public final void entryRuleFunctionLibraryTest() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:370:1: ( ruleFunctionLibraryTest EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:371:1: ruleFunctionLibraryTest EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryTestRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryTest_in_entryRuleFunctionLibraryTest727);
+            ruleFunctionLibraryTest();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryTestRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryTest734); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryTest"
+
+
+    // $ANTLR start "ruleFunctionLibraryTest"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:378:1: ruleFunctionLibraryTest : ( ( rule__FunctionLibraryTest__Group__0 ) ) ;
+    public final void ruleFunctionLibraryTest() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:382:2: ( ( ( rule__FunctionLibraryTest__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:383:1: ( ( rule__FunctionLibraryTest__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:383:1: ( ( rule__FunctionLibraryTest__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:384:1: ( rule__FunctionLibraryTest__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryTestAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:385:1: ( rule__FunctionLibraryTest__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:385:2: rule__FunctionLibraryTest__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryTest__Group__0_in_ruleFunctionLibraryTest760);
+            rule__FunctionLibraryTest__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryTestAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryTest"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryRate"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:397:1: entryRuleFunctionLibraryRate : ruleFunctionLibraryRate EOF ;
+    public final void entryRuleFunctionLibraryRate() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:398:1: ( ruleFunctionLibraryRate EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:399:1: ruleFunctionLibraryRate EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryRateRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryRate_in_entryRuleFunctionLibraryRate787);
+            ruleFunctionLibraryRate();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryRateRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryRate794); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryRate"
+
+
+    // $ANTLR start "ruleFunctionLibraryRate"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:406:1: ruleFunctionLibraryRate : ( ( rule__FunctionLibraryRate__Group__0 ) ) ;
+    public final void ruleFunctionLibraryRate() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:410:2: ( ( ( rule__FunctionLibraryRate__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:411:1: ( ( rule__FunctionLibraryRate__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:411:1: ( ( rule__FunctionLibraryRate__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:412:1: ( rule__FunctionLibraryRate__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryRateAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:413:1: ( rule__FunctionLibraryRate__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:413:2: rule__FunctionLibraryRate__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryRate__Group__0_in_ruleFunctionLibraryRate820);
+            rule__FunctionLibraryRate__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryRateAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryRate"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryGuard"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:425:1: entryRuleFunctionLibraryGuard : ruleFunctionLibraryGuard EOF ;
+    public final void entryRuleFunctionLibraryGuard() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:426:1: ( ruleFunctionLibraryGuard EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:427:1: ruleFunctionLibraryGuard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryGuardRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryGuard_in_entryRuleFunctionLibraryGuard847);
+            ruleFunctionLibraryGuard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryGuardRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryGuard854); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryGuard"
+
+
+    // $ANTLR start "ruleFunctionLibraryGuard"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:434:1: ruleFunctionLibraryGuard : ( ( rule__FunctionLibraryGuard__Group__0 ) ) ;
+    public final void ruleFunctionLibraryGuard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:438:2: ( ( ( rule__FunctionLibraryGuard__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:439:1: ( ( rule__FunctionLibraryGuard__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:439:1: ( ( rule__FunctionLibraryGuard__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:440:1: ( rule__FunctionLibraryGuard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryGuardAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:441:1: ( rule__FunctionLibraryGuard__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:441:2: rule__FunctionLibraryGuard__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryGuard__Group__0_in_ruleFunctionLibraryGuard880);
+            rule__FunctionLibraryGuard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryGuardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryGuard"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:453:1: entryRuleFunctionLibraryOperation : ruleFunctionLibraryOperation EOF ;
+    public final void entryRuleFunctionLibraryOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:454:1: ( ruleFunctionLibraryOperation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:455:1: ruleFunctionLibraryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryOperation_in_entryRuleFunctionLibraryOperation907);
+            ruleFunctionLibraryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryOperation914); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryOperation"
+
+
+    // $ANTLR start "ruleFunctionLibraryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:462:1: ruleFunctionLibraryOperation : ( ( rule__FunctionLibraryOperation__Group__0 ) ) ;
+    public final void ruleFunctionLibraryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:466:2: ( ( ( rule__FunctionLibraryOperation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:467:1: ( ( rule__FunctionLibraryOperation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:467:1: ( ( rule__FunctionLibraryOperation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:468:1: ( rule__FunctionLibraryOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryOperationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:469:1: ( rule__FunctionLibraryOperation__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:469:2: rule__FunctionLibraryOperation__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryOperation__Group__0_in_ruleFunctionLibraryOperation940);
+            rule__FunctionLibraryOperation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryOperationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryOperation"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:481:1: entryRuleFunctionLibraryParameter : ruleFunctionLibraryParameter EOF ;
+    public final void entryRuleFunctionLibraryParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:482:1: ( ruleFunctionLibraryParameter EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:483:1: ruleFunctionLibraryParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_entryRuleFunctionLibraryParameter967);
+            ruleFunctionLibraryParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryParameter974); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryParameter"
+
+
+    // $ANTLR start "ruleFunctionLibraryParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:490:1: ruleFunctionLibraryParameter : ( ( rule__FunctionLibraryParameter__Group__0 ) ) ;
+    public final void ruleFunctionLibraryParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:494:2: ( ( ( rule__FunctionLibraryParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:495:1: ( ( rule__FunctionLibraryParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:495:1: ( ( rule__FunctionLibraryParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:496:1: ( rule__FunctionLibraryParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFunctionLibraryParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:497:1: ( rule__FunctionLibraryParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:497:2: rule__FunctionLibraryParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__FunctionLibraryParameter__Group__0_in_ruleFunctionLibraryParameter1000);
+            rule__FunctionLibraryParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFunctionLibraryParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunctionLibraryParameter"
+
+
+    // $ANTLR start "entryRuleTYPE_CROSS_REFERENCE"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:509:1: entryRuleTYPE_CROSS_REFERENCE : ruleTYPE_CROSS_REFERENCE EOF ;
+    public final void entryRuleTYPE_CROSS_REFERENCE() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:510:1: ( ruleTYPE_CROSS_REFERENCE EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:511:1: ruleTYPE_CROSS_REFERENCE EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTYPE_CROSS_REFERENCERule()); 
+            }
+            pushFollow(FOLLOW_ruleTYPE_CROSS_REFERENCE_in_entryRuleTYPE_CROSS_REFERENCE1027);
+            ruleTYPE_CROSS_REFERENCE();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTYPE_CROSS_REFERENCERule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTYPE_CROSS_REFERENCE1034); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTYPE_CROSS_REFERENCE"
+
+
+    // $ANTLR start "ruleTYPE_CROSS_REFERENCE"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:518:1: ruleTYPE_CROSS_REFERENCE : ( RULE_ID ) ;
+    public final void ruleTYPE_CROSS_REFERENCE() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:522:2: ( ( RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:523:1: ( RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:523:1: ( RULE_ID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:524:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTYPE_CROSS_REFERENCE1060); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTYPE_CROSS_REFERENCE"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:537:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:538:1: ( ruleXAnnotation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:539:1: ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation1086);
+            ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation1093); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotation"
+
+
+    // $ANTLR start "ruleXAnnotation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:546:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:550:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:551:1: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:551:1: ( ( rule__XAnnotation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:552:1: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:553:1: ( rule__XAnnotation__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:553:2: rule__XAnnotation__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation1119);
+            rule__XAnnotation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotation"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:565:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:566:1: ( ruleXAnnotationElementValuePair EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:567:1: ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair1146);
+            ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair1153); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:574:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:578:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:579:1: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:579:1: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:580:1: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:581:1: ( rule__XAnnotationElementValuePair__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:581:2: rule__XAnnotationElementValuePair__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair1179);
+            rule__XAnnotationElementValuePair__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:593:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:594:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:595:1: ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList1206);
+            ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList1213); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:602:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:606:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:607:1: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:607:1: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:608:1: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:609:1: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:609:2: rule__XAnnotationElementValueOrCommaList__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList1239);
+            rule__XAnnotationElementValueOrCommaList__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:621:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:622:1: ( ruleXAnnotationElementValue EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:623:1: ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue1266);
+            ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue1273); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:630:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:634:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:635:1: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:635:1: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:636:1: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:637:1: ( rule__XAnnotationElementValue__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:637:2: rule__XAnnotationElementValue__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue1299);
+            rule__XAnnotationElementValue__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValue"
+
+
+    // $ANTLR start "entryRuleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:649:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:650:1: ( ruleXAnnotationOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:651:1: ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression1326);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression1333); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationOrExpression"
+
+
+    // $ANTLR start "ruleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:658:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:662:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:663:1: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:663:1: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:664:1: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:665:1: ( rule__XAnnotationOrExpression__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:665:2: rule__XAnnotationOrExpression__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression1359);
+            rule__XAnnotationOrExpression__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationOrExpression"
+
+
+    // $ANTLR start "entryRuleXExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:677:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:678:1: ( ruleXExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:679:1: ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression1386);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression1393); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpression"
+
+
+    // $ANTLR start "ruleXExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:686:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:690:2: ( ( ruleXAssignment ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:691:1: ( ruleXAssignment )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:691:1: ( ruleXAssignment )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:692:1: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression1419);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpression"
+
+
+    // $ANTLR start "entryRuleXAssignment"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:705:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:706:1: ( ruleXAssignment EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:707:1: ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment1445);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment1452); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAssignment"
+
+
+    // $ANTLR start "ruleXAssignment"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:714:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:718:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:719:1: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:719:1: ( ( rule__XAssignment__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:720:1: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:721:1: ( rule__XAssignment__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:721:2: rule__XAssignment__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment1478);
+            rule__XAssignment__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAssignment"
+
+
+    // $ANTLR start "entryRuleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:733:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:734:1: ( ruleOpSingleAssign EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:735:1: ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign1505);
+            ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign1512); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:742:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:746:2: ( ( '=' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:747:1: ( '=' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:747:1: ( '=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:748:1: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+            match(input,13,FOLLOW_13_in_ruleOpSingleAssign1539); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpSingleAssign"
+
+
+    // $ANTLR start "entryRuleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:763:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:764:1: ( ruleOpMultiAssign EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:765:1: ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign1567);
+            ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign1574); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:772:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:776:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:777:1: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:777:1: ( ( rule__OpMultiAssign__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:778:1: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:779:1: ( rule__OpMultiAssign__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:779:2: rule__OpMultiAssign__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign1600);
+            rule__OpMultiAssign__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpMultiAssign"
+
+
+    // $ANTLR start "entryRuleXOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:791:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:792:1: ( ruleXOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:793:1: ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression1627);
+            ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression1634); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOrExpression"
+
+
+    // $ANTLR start "ruleXOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:800:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:804:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:805:1: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:805:1: ( ( rule__XOrExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:806:1: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:807:1: ( rule__XOrExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:807:2: rule__XOrExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression1660);
+            rule__XOrExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXOrExpression"
+
+
+    // $ANTLR start "entryRuleOpOr"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:819:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:820:1: ( ruleOpOr EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:821:1: ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr1687);
+            ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr1694); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:828:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:832:2: ( ( '||' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:833:1: ( '||' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:833:1: ( '||' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:834:1: '||'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+            match(input,14,FOLLOW_14_in_ruleOpOr1721); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpOr"
+
+
+    // $ANTLR start "entryRuleXAndExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:849:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:850:1: ( ruleXAndExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:851:1: ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression1749);
+            ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression1756); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:858:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:862:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:863:1: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:863:1: ( ( rule__XAndExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:864:1: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:865:1: ( rule__XAndExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:865:2: rule__XAndExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression1782);
+            rule__XAndExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:877:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:878:1: ( ruleOpAnd EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:879:1: ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd1809);
+            ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd1816); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:886:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:890:2: ( ( '&&' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:891:1: ( '&&' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:891:1: ( '&&' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:892:1: '&&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+            match(input,15,FOLLOW_15_in_ruleOpAnd1843); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:907:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:908:1: ( ruleXEqualityExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:909:1: ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression1871);
+            ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression1878); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:916:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:920:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:921:1: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:921:1: ( ( rule__XEqualityExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:922:1: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:923:1: ( rule__XEqualityExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:923:2: rule__XEqualityExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression1904);
+            rule__XEqualityExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:935:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:936:1: ( ruleOpEquality EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:937:1: ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality1931);
+            ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality1938); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:944:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:948:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:949:1: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:949:1: ( ( rule__OpEquality__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:950:1: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:951:1: ( rule__OpEquality__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:951:2: rule__OpEquality__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality1964);
+            rule__OpEquality__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:963:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:964:1: ( ruleXRelationalExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:965:1: ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression1991);
+            ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression1998); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:972:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:976:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:977:1: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:977:1: ( ( rule__XRelationalExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:978:1: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:979:1: ( rule__XRelationalExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:979:2: rule__XRelationalExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression2024);
+            rule__XRelationalExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:991:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:992:1: ( ruleOpCompare EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:993:1: ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare2051);
+            ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare2058); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1000:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1004:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1005:1: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1005:1: ( ( rule__OpCompare__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1006:1: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1007:1: ( rule__OpCompare__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1007:2: rule__OpCompare__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare2084);
+            rule__OpCompare__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpCompare"
+
+
+    // $ANTLR start "entryRuleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1019:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1020:1: ( ruleXOtherOperatorExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1021:1: ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression2111);
+            ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression2118); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1028:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1032:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1033:1: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1033:1: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1034:1: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1035:1: ( rule__XOtherOperatorExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1035:2: rule__XOtherOperatorExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression2144);
+            rule__XOtherOperatorExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXOtherOperatorExpression"
+
+
+    // $ANTLR start "entryRuleOpOther"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1047:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1048:1: ( ruleOpOther EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1049:1: ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther2171);
+            ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther2178); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOther"
+
+
+    // $ANTLR start "ruleOpOther"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1056:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1060:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1061:1: ( ( rule__OpOther__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1061:1: ( ( rule__OpOther__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1062:1: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1063:1: ( rule__OpOther__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1063:2: rule__OpOther__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther2204);
+            rule__OpOther__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpOther"
+
+
+    // $ANTLR start "entryRuleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1075:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1076:1: ( ruleXAdditiveExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1077:1: ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression2231);
+            ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression2238); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1084:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1088:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1089:1: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1089:1: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1090:1: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1091:1: ( rule__XAdditiveExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1091:2: rule__XAdditiveExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression2264);
+            rule__XAdditiveExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAdditiveExpression"
+
+
+    // $ANTLR start "entryRuleOpAdd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1103:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1104:1: ( ruleOpAdd EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1105:1: ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd2291);
+            ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd2298); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1112:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1116:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1117:1: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1117:1: ( ( rule__OpAdd__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1118:1: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1119:1: ( rule__OpAdd__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1119:2: rule__OpAdd__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd2324);
+            rule__OpAdd__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpAdd"
+
+
+    // $ANTLR start "entryRuleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1131:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1132:1: ( ruleXMultiplicativeExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1133:1: ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression2351);
+            ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression2358); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1140:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1144:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1145:1: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1145:1: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1146:1: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1147:1: ( rule__XMultiplicativeExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1147:2: rule__XMultiplicativeExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression2384);
+            rule__XMultiplicativeExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1159:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1160:1: ( ruleOpMulti EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1161:1: ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti2411);
+            ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti2418); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1168:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1172:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1173:1: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1173:1: ( ( rule__OpMulti__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1174:1: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1175:1: ( rule__OpMulti__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1175:2: rule__OpMulti__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti2444);
+            rule__OpMulti__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpMulti"
+
+
+    // $ANTLR start "entryRuleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1187:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1188:1: ( ruleXUnaryOperation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1189:1: ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation2471);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation2478); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1196:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1200:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1201:1: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1201:1: ( ( rule__XUnaryOperation__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1202:1: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1203:1: ( rule__XUnaryOperation__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1203:2: rule__XUnaryOperation__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation2504);
+            rule__XUnaryOperation__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXUnaryOperation"
+
+
+    // $ANTLR start "entryRuleOpUnary"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1215:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1216:1: ( ruleOpUnary EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1217:1: ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary2531);
+            ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary2538); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1224:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1228:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1229:1: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1229:1: ( ( rule__OpUnary__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1230:1: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1231:1: ( rule__OpUnary__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1231:2: rule__OpUnary__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary2564);
+            rule__OpUnary__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpUnary"
+
+
+    // $ANTLR start "entryRuleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1243:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1244:1: ( ruleXCastedExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1245:1: ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression2591);
+            ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression2598); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1252:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1256:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1257:1: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1257:1: ( ( rule__XCastedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1258:1: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1259:1: ( rule__XCastedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1259:2: rule__XCastedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression2624);
+            rule__XCastedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1271:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1272:1: ( ruleXPostfixOperation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1273:1: ruleXPostfixOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation2651);
+            ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPostfixOperation2658); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPostfixOperation"
+
+
+    // $ANTLR start "ruleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1280:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1284:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1285:1: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1285:1: ( ( rule__XPostfixOperation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1286:1: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1287:1: ( rule__XPostfixOperation__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1287:2: rule__XPostfixOperation__Group__0
+            {
+            pushFollow(FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation2684);
+            rule__XPostfixOperation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXPostfixOperation"
+
+
+    // $ANTLR start "entryRuleOpPostfix"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1299:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1300:1: ( ruleOpPostfix EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1301:1: ruleOpPostfix EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix2711);
+            ruleOpPostfix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpPostfix2718); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpPostfix"
+
+
+    // $ANTLR start "ruleOpPostfix"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1308:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1312:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1313:1: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1313:1: ( ( rule__OpPostfix__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1314:1: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1315:1: ( rule__OpPostfix__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1315:2: rule__OpPostfix__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix2744);
+            rule__OpPostfix__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpPostfix"
+
+
+    // $ANTLR start "entryRuleXMemberFeatureCall"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1327:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1328:1: ( ruleXMemberFeatureCall EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1329:1: ruleXMemberFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall2771);
+            ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall2778); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMemberFeatureCall"
+
+
+    // $ANTLR start "ruleXMemberFeatureCall"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1336:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1340:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1341:1: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1341:1: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1342:1: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1343:1: ( rule__XMemberFeatureCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1343:2: rule__XMemberFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall2804);
+            rule__XMemberFeatureCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1355:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1356:1: ( ruleXPrimaryExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1357:1: ruleXPrimaryExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression2831);
+            ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPrimaryExpression2838); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPrimaryExpression"
+
+
+    // $ANTLR start "ruleXPrimaryExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1364:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1368:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1369:1: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1369:1: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1370:1: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1371:1: ( rule__XPrimaryExpression__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1371:2: rule__XPrimaryExpression__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression2864);
+            rule__XPrimaryExpression__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXPrimaryExpression"
+
+
+    // $ANTLR start "entryRuleXLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1383:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1384:1: ( ruleXLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1385:1: ruleXLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral2891);
+            ruleXLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral2898); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXLiteral"
+
+
+    // $ANTLR start "ruleXLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1392:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1396:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1397:1: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1397:1: ( ( rule__XLiteral__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1398:1: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1399:1: ( rule__XLiteral__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1399:2: rule__XLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral2924);
+            rule__XLiteral__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXLiteral"
+
+
+    // $ANTLR start "entryRuleXCollectionLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1411:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1412:1: ( ruleXCollectionLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1413:1: ruleXCollectionLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral2951);
+            ruleXCollectionLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCollectionLiteral2958); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCollectionLiteral"
+
+
+    // $ANTLR start "ruleXCollectionLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1420:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1424:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1425:1: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1425:1: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1426:1: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1427:1: ( rule__XCollectionLiteral__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1427:2: rule__XCollectionLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral2984);
+            rule__XCollectionLiteral__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCollectionLiteral"
+
+
+    // $ANTLR start "entryRuleXSetLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1439:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1440:1: ( ruleXSetLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1441:1: ruleXSetLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral3011);
+            ruleXSetLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSetLiteral3018); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSetLiteral"
+
+
+    // $ANTLR start "ruleXSetLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1448:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1452:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1453:1: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1453:1: ( ( rule__XSetLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1454:1: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1455:1: ( rule__XSetLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1455:2: rule__XSetLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral3044);
+            rule__XSetLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSetLiteral"
+
+
+    // $ANTLR start "entryRuleXListLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1467:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1468:1: ( ruleXListLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1469:1: ruleXListLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral3071);
+            ruleXListLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXListLiteral3078); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXListLiteral"
+
+
+    // $ANTLR start "ruleXListLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1476:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1480:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1481:1: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1481:1: ( ( rule__XListLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1482:1: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1483:1: ( rule__XListLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1483:2: rule__XListLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral3104);
+            rule__XListLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXListLiteral"
+
+
+    // $ANTLR start "entryRuleXClosure"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1495:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1496:1: ( ruleXClosure EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1497:1: ruleXClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXClosure_in_entryRuleXClosure3131);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXClosure3138); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXClosure"
+
+
+    // $ANTLR start "ruleXClosure"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1504:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1508:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1509:1: ( ( rule__XClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1509:1: ( ( rule__XClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1510:1: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1511:1: ( rule__XClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1511:2: rule__XClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XClosure__Group__0_in_ruleXClosure3164);
+            rule__XClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXClosure"
+
+
+    // $ANTLR start "entryRuleXExpressionInClosure"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1523:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1524:1: ( ruleXExpressionInClosure EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1525:1: ruleXExpressionInClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure3191);
+            ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInClosure3198); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionInClosure"
+
+
+    // $ANTLR start "ruleXExpressionInClosure"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1532:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1536:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1537:1: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1537:1: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1538:1: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1539:1: ( rule__XExpressionInClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1539:2: rule__XExpressionInClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure3224);
+            rule__XExpressionInClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1551:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1552:1: ( ruleXShortClosure EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1553:1: ruleXShortClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure3251);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXShortClosure3258); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXShortClosure"
+
+
+    // $ANTLR start "ruleXShortClosure"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1560:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1564:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1565:1: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1565:1: ( ( rule__XShortClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1566:1: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1567:1: ( rule__XShortClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1567:2: rule__XShortClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure3284);
+            rule__XShortClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXShortClosure"
+
+
+    // $ANTLR start "entryRuleXParenthesizedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1579:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1580:1: ( ruleXParenthesizedExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1581:1: ruleXParenthesizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression3311);
+            ruleXParenthesizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression3318); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXParenthesizedExpression"
+
+
+    // $ANTLR start "ruleXParenthesizedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1588:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1592:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1593:1: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1593:1: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1594:1: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1595:1: ( rule__XParenthesizedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1595:2: rule__XParenthesizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression3344);
+            rule__XParenthesizedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXParenthesizedExpression"
+
+
+    // $ANTLR start "entryRuleXIfExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1607:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1608:1: ( ruleXIfExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1609:1: ruleXIfExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression3371);
+            ruleXIfExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression3378); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXIfExpression"
+
+
+    // $ANTLR start "ruleXIfExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1616:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1620:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1621:1: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1621:1: ( ( rule__XIfExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1622:1: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1623:1: ( rule__XIfExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1623:2: rule__XIfExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression3404);
+            rule__XIfExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXIfExpression"
+
+
+    // $ANTLR start "entryRuleXSwitchExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1635:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1636:1: ( ruleXSwitchExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1637:1: ruleXSwitchExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression3431);
+            ruleXSwitchExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSwitchExpression3438); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSwitchExpression"
+
+
+    // $ANTLR start "ruleXSwitchExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1644:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1648:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1649:1: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1649:1: ( ( rule__XSwitchExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1650:1: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1651:1: ( rule__XSwitchExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1651:2: rule__XSwitchExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression3464);
+            rule__XSwitchExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSwitchExpression"
+
+
+    // $ANTLR start "entryRuleXCasePart"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1663:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1664:1: ( ruleXCasePart EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1665:1: ruleXCasePart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCasePart_in_entryRuleXCasePart3491);
+            ruleXCasePart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCasePart3498); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCasePart"
+
+
+    // $ANTLR start "ruleXCasePart"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1672:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1676:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1677:1: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1677:1: ( ( rule__XCasePart__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1678:1: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1679:1: ( rule__XCasePart__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1679:2: rule__XCasePart__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart3524);
+            rule__XCasePart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCasePart"
+
+
+    // $ANTLR start "entryRuleXForLoopExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1691:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1692:1: ( ruleXForLoopExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1693:1: ruleXForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression3551);
+            ruleXForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXForLoopExpression3558); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXForLoopExpression"
+
+
+    // $ANTLR start "ruleXForLoopExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1700:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1704:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1705:1: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1705:1: ( ( rule__XForLoopExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1706:1: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1707:1: ( rule__XForLoopExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1707:2: rule__XForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression3584);
+            rule__XForLoopExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXBasicForLoopExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1719:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1720:1: ( ruleXBasicForLoopExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1721:1: ruleXBasicForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression3611);
+            ruleXBasicForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBasicForLoopExpression3618); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBasicForLoopExpression"
+
+
+    // $ANTLR start "ruleXBasicForLoopExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1728:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1732:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1733:1: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1733:1: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1734:1: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1735:1: ( rule__XBasicForLoopExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1735:2: rule__XBasicForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression3644);
+            rule__XBasicForLoopExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBasicForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXWhileExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1747:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1748:1: ( ruleXWhileExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1749:1: ruleXWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression3671);
+            ruleXWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression3678); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXWhileExpression"
+
+
+    // $ANTLR start "ruleXWhileExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1756:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1760:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1761:1: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1761:1: ( ( rule__XWhileExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1762:1: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1763:1: ( rule__XWhileExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1763:2: rule__XWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression3704);
+            rule__XWhileExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXWhileExpression"
+
+
+    // $ANTLR start "entryRuleXDoWhileExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1775:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1776:1: ( ruleXDoWhileExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1777:1: ruleXDoWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression3731);
+            ruleXDoWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXDoWhileExpression3738); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXDoWhileExpression"
+
+
+    // $ANTLR start "ruleXDoWhileExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1784:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1788:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1789:1: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1789:1: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1790:1: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1791:1: ( rule__XDoWhileExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1791:2: rule__XDoWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression3764);
+            rule__XDoWhileExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXDoWhileExpression"
+
+
+    // $ANTLR start "entryRuleXBlockExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1803:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1804:1: ( ruleXBlockExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1805:1: ruleXBlockExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression3791);
+            ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression3798); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBlockExpression"
+
+
+    // $ANTLR start "ruleXBlockExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1812:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1816:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1817:1: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1817:1: ( ( rule__XBlockExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1818:1: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1819:1: ( rule__XBlockExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1819:2: rule__XBlockExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression3824);
+            rule__XBlockExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBlockExpression"
+
+
+    // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1831:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1832:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1833:1: ruleXExpressionOrVarDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration3851);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration3858); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "ruleXExpressionOrVarDeclaration"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1840:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1844:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1845:1: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1845:1: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1846:1: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1847:1: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1847:2: rule__XExpressionOrVarDeclaration__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration3884);
+            rule__XExpressionOrVarDeclaration__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "entryRuleXVariableDeclaration"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1859:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1860:1: ( ruleXVariableDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1861:1: ruleXVariableDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration3911);
+            ruleXVariableDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration3918); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXVariableDeclaration"
+
+
+    // $ANTLR start "ruleXVariableDeclaration"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1868:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1872:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1873:1: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1873:1: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1874:1: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1875:1: ( rule__XVariableDeclaration__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1875:2: rule__XVariableDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration3944);
+            rule__XVariableDeclaration__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXVariableDeclaration"
+
+
+    // $ANTLR start "entryRuleJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1887:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1888:1: ( ruleJvmFormalParameter EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1889:1: ruleJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter3971);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmFormalParameter3978); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmFormalParameter"
+
+
+    // $ANTLR start "ruleJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1896:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1900:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1901:1: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1901:1: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1902:1: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1903:1: ( rule__JvmFormalParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1903:2: rule__JvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter4004);
+            rule__JvmFormalParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleFullJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1915:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1916:1: ( ruleFullJvmFormalParameter EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1917:1: ruleFullJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter4031);
+            ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFullJvmFormalParameter4038); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFullJvmFormalParameter"
+
+
+    // $ANTLR start "ruleFullJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1924:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1928:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1929:1: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1929:1: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1930:1: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1931:1: ( rule__FullJvmFormalParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1931:2: rule__FullJvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter4064);
+            rule__FullJvmFormalParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFullJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleXFeatureCall"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1943:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1944:1: ( ruleXFeatureCall EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1945:1: ruleXFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall4091);
+            ruleXFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall4098); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFeatureCall"
+
+
+    // $ANTLR start "ruleXFeatureCall"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1952:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1956:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1957:1: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1957:1: ( ( rule__XFeatureCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1958:1: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1959:1: ( rule__XFeatureCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1959:2: rule__XFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall4124);
+            rule__XFeatureCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXFeatureCall"
+
+
+    // $ANTLR start "entryRuleFeatureCallID"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1971:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1972:1: ( ruleFeatureCallID EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1973:1: ruleFeatureCallID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID4151);
+            ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFeatureCallID4158); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFeatureCallID"
+
+
+    // $ANTLR start "ruleFeatureCallID"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1980:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1984:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1985:1: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1985:1: ( ( rule__FeatureCallID__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1986:1: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1987:1: ( rule__FeatureCallID__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1987:2: rule__FeatureCallID__Alternatives
+            {
+            pushFollow(FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID4184);
+            rule__FeatureCallID__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFeatureCallID"
+
+
+    // $ANTLR start "entryRuleIdOrSuper"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:1999:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2000:1: ( ruleIdOrSuper EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2001:1: ruleIdOrSuper EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperRule()); 
+            }
+            pushFollow(FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper4211);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleIdOrSuper4218); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIdOrSuper"
+
+
+    // $ANTLR start "ruleIdOrSuper"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2008:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2012:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2013:1: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2013:1: ( ( rule__IdOrSuper__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2014:1: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2015:1: ( rule__IdOrSuper__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2015:2: rule__IdOrSuper__Alternatives
+            {
+            pushFollow(FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper4244);
+            rule__IdOrSuper__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIdOrSuper"
+
+
+    // $ANTLR start "entryRuleXConstructorCall"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2027:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2028:1: ( ruleXConstructorCall EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2029:1: ruleXConstructorCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall4271);
+            ruleXConstructorCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructorCall4278); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXConstructorCall"
+
+
+    // $ANTLR start "ruleXConstructorCall"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2036:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2040:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2041:1: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2041:1: ( ( rule__XConstructorCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2042:1: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2043:1: ( rule__XConstructorCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2043:2: rule__XConstructorCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall4304);
+            rule__XConstructorCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXConstructorCall"
+
+
+    // $ANTLR start "entryRuleXBooleanLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2055:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2056:1: ( ruleXBooleanLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2057:1: ruleXBooleanLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral4331);
+            ruleXBooleanLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBooleanLiteral4338); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBooleanLiteral"
+
+
+    // $ANTLR start "ruleXBooleanLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2064:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2068:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2069:1: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2069:1: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2070:1: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2071:1: ( rule__XBooleanLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2071:2: rule__XBooleanLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral4364);
+            rule__XBooleanLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBooleanLiteral"
+
+
+    // $ANTLR start "entryRuleXNullLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2083:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2084:1: ( ruleXNullLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2085:1: ruleXNullLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral4391);
+            ruleXNullLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral4398); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNullLiteral"
+
+
+    // $ANTLR start "ruleXNullLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2092:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2096:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2097:1: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2097:1: ( ( rule__XNullLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2098:1: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2099:1: ( rule__XNullLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2099:2: rule__XNullLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral4424);
+            rule__XNullLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXNullLiteral"
+
+
+    // $ANTLR start "entryRuleXNumberLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2111:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2112:1: ( ruleXNumberLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2113:1: ruleXNumberLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral4451);
+            ruleXNumberLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXNumberLiteral4458); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNumberLiteral"
+
+
+    // $ANTLR start "ruleXNumberLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2120:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2124:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2125:1: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2125:1: ( ( rule__XNumberLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2126:1: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2127:1: ( rule__XNumberLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2127:2: rule__XNumberLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral4484);
+            rule__XNumberLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXNumberLiteral"
+
+
+    // $ANTLR start "entryRuleXStringLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2139:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2140:1: ( ruleXStringLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2141:1: ruleXStringLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral4511);
+            ruleXStringLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral4518); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXStringLiteral"
+
+
+    // $ANTLR start "ruleXStringLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2148:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2152:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2153:1: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2153:1: ( ( rule__XStringLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2154:1: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2155:1: ( rule__XStringLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2155:2: rule__XStringLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral4544);
+            rule__XStringLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXStringLiteral"
+
+
+    // $ANTLR start "entryRuleXTypeLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2167:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2168:1: ( ruleXTypeLiteral EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2169:1: ruleXTypeLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral4571);
+            ruleXTypeLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXTypeLiteral4578); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTypeLiteral"
+
+
+    // $ANTLR start "ruleXTypeLiteral"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2176:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2180:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2181:1: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2181:1: ( ( rule__XTypeLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2182:1: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2183:1: ( rule__XTypeLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2183:2: rule__XTypeLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral4604);
+            rule__XTypeLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXTypeLiteral"
+
+
+    // $ANTLR start "entryRuleXThrowExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2195:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2196:1: ( ruleXThrowExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2197:1: ruleXThrowExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression4631);
+            ruleXThrowExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXThrowExpression4638); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXThrowExpression"
+
+
+    // $ANTLR start "ruleXThrowExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2204:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2208:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2209:1: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2209:1: ( ( rule__XThrowExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2210:1: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2211:1: ( rule__XThrowExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2211:2: rule__XThrowExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression4664);
+            rule__XThrowExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXThrowExpression"
+
+
+    // $ANTLR start "entryRuleXReturnExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2223:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2224:1: ( ruleXReturnExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2225:1: ruleXReturnExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression4691);
+            ruleXReturnExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnExpression4698); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXReturnExpression"
+
+
+    // $ANTLR start "ruleXReturnExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2232:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2236:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2237:1: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2237:1: ( ( rule__XReturnExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2238:1: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2239:1: ( rule__XReturnExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2239:2: rule__XReturnExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression4724);
+            rule__XReturnExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXReturnExpression"
+
+
+    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2251:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2252:1: ( ruleXTryCatchFinallyExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2253:1: ruleXTryCatchFinallyExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression4751);
+            ruleXTryCatchFinallyExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression4758); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "ruleXTryCatchFinallyExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2260:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2264:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2265:1: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2265:1: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2266:1: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2267:1: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2267:2: rule__XTryCatchFinallyExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression4784);
+            rule__XTryCatchFinallyExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "entryRuleXSynchronizedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2279:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2280:1: ( ruleXSynchronizedExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2281:1: ruleXSynchronizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression4811);
+            ruleXSynchronizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSynchronizedExpression4818); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSynchronizedExpression"
+
+
+    // $ANTLR start "ruleXSynchronizedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2288:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2292:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2293:1: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2293:1: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2294:1: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2295:1: ( rule__XSynchronizedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2295:2: rule__XSynchronizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression4844);
+            rule__XSynchronizedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSynchronizedExpression"
+
+
+    // $ANTLR start "entryRuleXCatchClause"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2307:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2308:1: ( ruleXCatchClause EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2309:1: ruleXCatchClause EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause4871);
+            ruleXCatchClause();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCatchClause4878); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCatchClause"
+
+
+    // $ANTLR start "ruleXCatchClause"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2316:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2320:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2321:1: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2321:1: ( ( rule__XCatchClause__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2322:1: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2323:1: ( rule__XCatchClause__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2323:2: rule__XCatchClause__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause4904);
+            rule__XCatchClause__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCatchClause"
+
+
+    // $ANTLR start "entryRuleQualifiedName"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2335:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2336:1: ( ruleQualifiedName EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2337:1: ruleQualifiedName EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName4931);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName4938); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedName"
+
+
+    // $ANTLR start "ruleQualifiedName"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2344:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2348:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2349:1: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2349:1: ( ( rule__QualifiedName__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2350:1: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2351:1: ( rule__QualifiedName__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2351:2: rule__QualifiedName__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName4964);
+            rule__QualifiedName__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2363:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2367:1: ( ruleNumber EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2368:1: ruleNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberRule()); 
+            }
+            pushFollow(FOLLOW_ruleNumber_in_entryRuleNumber4996);
+            ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleNumber5003); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	myHiddenTokenState.restore();
+
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNumber"
+
+
+    // $ANTLR start "ruleNumber"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2378:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2383:2: ( ( ( rule__Number__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2384:1: ( ( rule__Number__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2384:1: ( ( rule__Number__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2385:1: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2386:1: ( rule__Number__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2386:2: rule__Number__Alternatives
+            {
+            pushFollow(FOLLOW_rule__Number__Alternatives_in_ruleNumber5033);
+            rule__Number__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+            	myHiddenTokenState.restore();
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNumber"
+
+
+    // $ANTLR start "entryRuleJvmTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2401:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2402:1: ( ruleJvmTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2403:1: ruleJvmTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference5062);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmTypeReference5069); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmTypeReference"
+
+
+    // $ANTLR start "ruleJvmTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2410:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2414:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2415:1: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2415:1: ( ( rule__JvmTypeReference__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2416:1: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2417:1: ( rule__JvmTypeReference__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2417:2: rule__JvmTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference5095);
+            rule__JvmTypeReference__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmTypeReference"
+
+
+    // $ANTLR start "entryRuleArrayBrackets"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2429:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2430:1: ( ruleArrayBrackets EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2431:1: ruleArrayBrackets EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsRule()); 
+            }
+            pushFollow(FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets5122);
+            ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayBrackets5129); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleArrayBrackets"
+
+
+    // $ANTLR start "ruleArrayBrackets"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2438:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2442:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2443:1: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2443:1: ( ( rule__ArrayBrackets__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2444:1: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2445:1: ( rule__ArrayBrackets__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2445:2: rule__ArrayBrackets__Group__0
+            {
+            pushFollow(FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets5155);
+            rule__ArrayBrackets__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleArrayBrackets"
+
+
+    // $ANTLR start "entryRuleXFunctionTypeRef"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2457:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2458:1: ( ruleXFunctionTypeRef EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2459:1: ruleXFunctionTypeRef EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            pushFollow(FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef5182);
+            ruleXFunctionTypeRef();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionTypeRef5189); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFunctionTypeRef"
+
+
+    // $ANTLR start "ruleXFunctionTypeRef"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2466:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2470:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2471:1: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2471:1: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2472:1: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2473:1: ( rule__XFunctionTypeRef__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2473:2: rule__XFunctionTypeRef__Group__0
+            {
+            pushFollow(FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef5215);
+            rule__XFunctionTypeRef__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXFunctionTypeRef"
+
+
+    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2485:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2486:1: ( ruleJvmParameterizedTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2487:1: ruleJvmParameterizedTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference5242);
+            ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference5249); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "ruleJvmParameterizedTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2494:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2498:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2499:1: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2499:1: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2500:1: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2501:1: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2501:2: rule__JvmParameterizedTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference5275);
+            rule__JvmParameterizedTypeReference__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2513:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2514:1: ( ruleJvmArgumentTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2515:1: ruleJvmArgumentTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference5302);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference5309); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "ruleJvmArgumentTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2522:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2526:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2527:1: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2527:1: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2528:1: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2529:1: ( rule__JvmArgumentTypeReference__Alternatives )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2529:2: rule__JvmArgumentTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference5335);
+            rule__JvmArgumentTypeReference__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmWildcardTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2541:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2542:1: ( ruleJvmWildcardTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2543:1: ruleJvmWildcardTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference5362);
+            ruleJvmWildcardTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference5369); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "ruleJvmWildcardTypeReference"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2550:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2554:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2555:1: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2555:1: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2556:1: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2557:1: ( rule__JvmWildcardTypeReference__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2557:2: rule__JvmWildcardTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference5395);
+            rule__JvmWildcardTypeReference__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2569:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2570:1: ( ruleJvmUpperBound EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2571:1: ruleJvmUpperBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound5422);
+            ruleJvmUpperBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBound5429); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBound"
+
+
+    // $ANTLR start "ruleJvmUpperBound"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2578:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2582:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2583:1: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2583:1: ( ( rule__JvmUpperBound__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2584:1: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2585:1: ( rule__JvmUpperBound__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2585:2: rule__JvmUpperBound__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound5455);
+            rule__JvmUpperBound__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmUpperBound"
+
+
+    // $ANTLR start "entryRuleJvmUpperBoundAnded"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2597:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2598:1: ( ruleJvmUpperBoundAnded EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2599:1: ruleJvmUpperBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded5482);
+            ruleJvmUpperBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded5489); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "ruleJvmUpperBoundAnded"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2606:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2610:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2611:1: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2611:1: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2612:1: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2613:1: ( rule__JvmUpperBoundAnded__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2613:2: rule__JvmUpperBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded5515);
+            rule__JvmUpperBoundAnded__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "entryRuleJvmLowerBound"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2625:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2626:1: ( ruleJvmLowerBound EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2627:1: ruleJvmLowerBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound5542);
+            ruleJvmLowerBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBound5549); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBound"
+
+
+    // $ANTLR start "ruleJvmLowerBound"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2634:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2638:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2639:1: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2639:1: ( ( rule__JvmLowerBound__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2640:1: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2641:1: ( rule__JvmLowerBound__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2641:2: rule__JvmLowerBound__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound5575);
+            rule__JvmLowerBound__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmLowerBound"
+
+
+    // $ANTLR start "entryRuleJvmLowerBoundAnded"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2653:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2654:1: ( ruleJvmLowerBoundAnded EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2655:1: ruleJvmLowerBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded5602);
+            ruleJvmLowerBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded5609); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "ruleJvmLowerBoundAnded"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2662:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2666:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2667:1: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2667:1: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2668:1: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2669:1: ( rule__JvmLowerBoundAnded__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2669:2: rule__JvmLowerBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded5635);
+            rule__JvmLowerBoundAnded__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2683:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2684:1: ( ruleQualifiedNameWithWildcard EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2685:1: ruleQualifiedNameWithWildcard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard5664);
+            ruleQualifiedNameWithWildcard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard5671); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "ruleQualifiedNameWithWildcard"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2692:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2696:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2697:1: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2697:1: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2698:1: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2699:1: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2699:2: rule__QualifiedNameWithWildcard__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard5697);
+            rule__QualifiedNameWithWildcard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "entryRuleValidID"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2711:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2712:1: ( ruleValidID EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2713:1: ruleValidID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID5724);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID5731); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleValidID"
+
+
+    // $ANTLR start "ruleValidID"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2720:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2724:2: ( ( RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2725:1: ( RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2725:1: ( RULE_ID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2726:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID5757); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleValidID"
+
+
+    // $ANTLR start "entryRuleXImportSection"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2739:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    public final void entryRuleXImportSection() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2740:1: ( ruleXImportSection EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2741:1: ruleXImportSection EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXImportSection_in_entryRuleXImportSection5783);
+            ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXImportSection5790); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXImportSection"
+
+
+    // $ANTLR start "ruleXImportSection"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2748:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    public final void ruleXImportSection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2752:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2753:1: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2753:1: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2754:1: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2754:1: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2755:1: ( rule__XImportSection__ImportDeclarationsAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2756:1: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2756:2: rule__XImportSection__ImportDeclarationsAssignment
+            {
+            pushFollow(FOLLOW_rule__XImportSection__ImportDeclarationsAssignment_in_ruleXImportSection5818);
+            rule__XImportSection__ImportDeclarationsAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2759:1: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2760:1: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2761:1: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==47) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2761:2: rule__XImportSection__ImportDeclarationsAssignment
+            	    {
+            	    pushFollow(FOLLOW_rule__XImportSection__ImportDeclarationsAssignment_in_ruleXImportSection5830);
+            	    rule__XImportSection__ImportDeclarationsAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2774:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2775:1: ( ruleXImportDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2776:1: ruleXImportDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration5860);
+            ruleXImportDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXImportDeclaration5867); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXImportDeclaration"
+
+
+    // $ANTLR start "ruleXImportDeclaration"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2783:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2787:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2788:1: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2788:1: ( ( rule__XImportDeclaration__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2789:1: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2790:1: ( rule__XImportDeclaration__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2790:2: rule__XImportDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration5893);
+            rule__XImportDeclaration__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXImportDeclaration"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2802:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2803:1: ( ruleQualifiedNameInStaticImport EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2804:1: ruleQualifiedNameInStaticImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport5920);
+            ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport5927); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleQualifiedNameInStaticImport"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2811:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2815:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2816:1: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2816:1: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2817:1: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2817:1: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2818:1: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2819:1: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2819:2: rule__QualifiedNameInStaticImport__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport5955);
+            rule__QualifiedNameInStaticImport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2822:1: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2823:1: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2824:1: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==RULE_ID) ) {
+                    int LA2_2 = input.LA(2);
+
+                    if ( (LA2_2==43) ) {
+                        alt2=1;
+                    }
+
+
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2824:2: rule__QualifiedNameInStaticImport__Group__0
+            	    {
+            	    pushFollow(FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport5967);
+            	    rule__QualifiedNameInStaticImport__Group__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "rule__FunctionLibraryPackage__Alternatives_5"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2837:1: rule__FunctionLibraryPackage__Alternatives_5 : ( ( ( rule__FunctionLibraryPackage__GroupsAssignment_5_0 ) ) | ( ( rule__FunctionLibraryPackage__RatingsAssignment_5_1 ) ) );
+    public final void rule__FunctionLibraryPackage__Alternatives_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2841:1: ( ( ( rule__FunctionLibraryPackage__GroupsAssignment_5_0 ) ) | ( ( rule__FunctionLibraryPackage__RatingsAssignment_5_1 ) ) )
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( ((LA3_0>=54 && LA3_0<=57)) ) {
+                alt3=1;
+            }
+            else if ( (LA3_0==62) ) {
+                alt3=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+            switch (alt3) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2842:1: ( ( rule__FunctionLibraryPackage__GroupsAssignment_5_0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2842:1: ( ( rule__FunctionLibraryPackage__GroupsAssignment_5_0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2843:1: ( rule__FunctionLibraryPackage__GroupsAssignment_5_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_5_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2844:1: ( rule__FunctionLibraryPackage__GroupsAssignment_5_0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2844:2: rule__FunctionLibraryPackage__GroupsAssignment_5_0
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryPackage__GroupsAssignment_5_0_in_rule__FunctionLibraryPackage__Alternatives_56006);
+                    rule__FunctionLibraryPackage__GroupsAssignment_5_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsAssignment_5_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2848:6: ( ( rule__FunctionLibraryPackage__RatingsAssignment_5_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2848:6: ( ( rule__FunctionLibraryPackage__RatingsAssignment_5_1 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2849:1: ( rule__FunctionLibraryPackage__RatingsAssignment_5_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_5_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2850:1: ( rule__FunctionLibraryPackage__RatingsAssignment_5_1 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2850:2: rule__FunctionLibraryPackage__RatingsAssignment_5_1
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryPackage__RatingsAssignment_5_1_in_rule__FunctionLibraryPackage__Alternatives_56024);
+                    rule__FunctionLibraryPackage__RatingsAssignment_5_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryPackageAccess().getRatingsAssignment_5_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FunctionLibraryPackage__Alternatives_5"
+
+
+    // $ANTLR start "rule__FunctionLibraryPackage__GroupsAlternatives_5_0_0"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2859:1: rule__FunctionLibraryPackage__GroupsAlternatives_5_0_0 : ( ( ruleFunctionLibraryGroup ) | ( ruleFunctionLibraryBlipGroup ) | ( ruleFunctionLibraryConverterGroup ) | ( ruleFunctionLibraryStatemachineGroup ) );
+    public final void rule__FunctionLibraryPackage__GroupsAlternatives_5_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2863:1: ( ( ruleFunctionLibraryGroup ) | ( ruleFunctionLibraryBlipGroup ) | ( ruleFunctionLibraryConverterGroup ) | ( ruleFunctionLibraryStatemachineGroup ) )
+            int alt4=4;
+            switch ( input.LA(1) ) {
+            case 54:
+                {
+                alt4=1;
+                }
+                break;
+            case 55:
+                {
+                alt4=2;
+                }
+                break;
+            case 57:
+                {
+                alt4=3;
+                }
+                break;
+            case 56:
+                {
+                alt4=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2864:1: ( ruleFunctionLibraryGroup )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2864:1: ( ruleFunctionLibraryGroup )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2865:1: ruleFunctionLibraryGroup
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0()); 
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryGroup_in_rule__FunctionLibraryPackage__GroupsAlternatives_5_0_06057);
+                    ruleFunctionLibraryGroup();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2870:6: ( ruleFunctionLibraryBlipGroup )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2870:6: ( ruleFunctionLibraryBlipGroup )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2871:1: ruleFunctionLibraryBlipGroup
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryBlipGroup_in_rule__FunctionLibraryPackage__GroupsAlternatives_5_0_06074);
+                    ruleFunctionLibraryBlipGroup();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2876:6: ( ruleFunctionLibraryConverterGroup )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2876:6: ( ruleFunctionLibraryConverterGroup )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2877:1: ruleFunctionLibraryConverterGroup
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2()); 
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryConverterGroup_in_rule__FunctionLibraryPackage__GroupsAlternatives_5_0_06091);
+                    ruleFunctionLibraryConverterGroup();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2882:6: ( ruleFunctionLibraryStatemachineGroup )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2882:6: ( ruleFunctionLibraryStatemachineGroup )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2883:1: ruleFunctionLibraryStatemachineGroup
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3()); 
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryStatemachineGroup_in_rule__FunctionLibraryPackage__GroupsAlternatives_5_0_06108);
+                    ruleFunctionLibraryStatemachineGroup();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FunctionLibraryPackage__GroupsAlternatives_5_0_0"
+
+
+    // $ANTLR start "rule__FunctionLibraryGroup__Alternatives_3"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2893:1: rule__FunctionLibraryGroup__Alternatives_3 : ( ( ( rule__FunctionLibraryGroup__FunctionsAssignment_3_0 ) ) | ( ( rule__FunctionLibraryGroup__TestsAssignment_3_1 ) ) | ( ( rule__FunctionLibraryGroup__RatesAssignment_3_2 ) ) );
+    public final void rule__FunctionLibraryGroup__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2897:1: ( ( ( rule__FunctionLibraryGroup__FunctionsAssignment_3_0 ) ) | ( ( rule__FunctionLibraryGroup__TestsAssignment_3_1 ) ) | ( ( rule__FunctionLibraryGroup__RatesAssignment_3_2 ) ) )
+            int alt5=3;
+            switch ( input.LA(1) ) {
+            case 63:
+                {
+                alt5=1;
+                }
+                break;
+            case 68:
+                {
+                alt5=2;
+                }
+                break;
+            case 69:
+                {
+                alt5=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2898:1: ( ( rule__FunctionLibraryGroup__FunctionsAssignment_3_0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2898:1: ( ( rule__FunctionLibraryGroup__FunctionsAssignment_3_0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2899:1: ( rule__FunctionLibraryGroup__FunctionsAssignment_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsAssignment_3_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2900:1: ( rule__FunctionLibraryGroup__FunctionsAssignment_3_0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2900:2: rule__FunctionLibraryGroup__FunctionsAssignment_3_0
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryGroup__FunctionsAssignment_3_0_in_rule__FunctionLibraryGroup__Alternatives_36140);
+                    rule__FunctionLibraryGroup__FunctionsAssignment_3_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsAssignment_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2904:6: ( ( rule__FunctionLibraryGroup__TestsAssignment_3_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2904:6: ( ( rule__FunctionLibraryGroup__TestsAssignment_3_1 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2905:1: ( rule__FunctionLibraryGroup__TestsAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryGroupAccess().getTestsAssignment_3_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2906:1: ( rule__FunctionLibraryGroup__TestsAssignment_3_1 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2906:2: rule__FunctionLibraryGroup__TestsAssignment_3_1
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryGroup__TestsAssignment_3_1_in_rule__FunctionLibraryGroup__Alternatives_36158);
+                    rule__FunctionLibraryGroup__TestsAssignment_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryGroupAccess().getTestsAssignment_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2910:6: ( ( rule__FunctionLibraryGroup__RatesAssignment_3_2 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2910:6: ( ( rule__FunctionLibraryGroup__RatesAssignment_3_2 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2911:1: ( rule__FunctionLibraryGroup__RatesAssignment_3_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryGroupAccess().getRatesAssignment_3_2()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2912:1: ( rule__FunctionLibraryGroup__RatesAssignment_3_2 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2912:2: rule__FunctionLibraryGroup__RatesAssignment_3_2
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryGroup__RatesAssignment_3_2_in_rule__FunctionLibraryGroup__Alternatives_36176);
+                    rule__FunctionLibraryGroup__RatesAssignment_3_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryGroupAccess().getRatesAssignment_3_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FunctionLibraryGroup__Alternatives_3"
+
+
+    // $ANTLR start "rule__FunctionLibraryBlipGroup__Alternatives_3"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2921:1: rule__FunctionLibraryBlipGroup__Alternatives_3 : ( ( ( rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0 ) ) | ( ( rule__FunctionLibraryBlipGroup__TestsAssignment_3_1 ) ) | ( ( rule__FunctionLibraryBlipGroup__RatesAssignment_3_2 ) ) );
+    public final void rule__FunctionLibraryBlipGroup__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2925:1: ( ( ( rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0 ) ) | ( ( rule__FunctionLibraryBlipGroup__TestsAssignment_3_1 ) ) | ( ( rule__FunctionLibraryBlipGroup__RatesAssignment_3_2 ) ) )
+            int alt6=3;
+            switch ( input.LA(1) ) {
+            case 63:
+                {
+                alt6=1;
+                }
+                break;
+            case 68:
+                {
+                alt6=2;
+                }
+                break;
+            case 69:
+                {
+                alt6=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt6) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2926:1: ( ( rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2926:1: ( ( rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2927:1: ( rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsAssignment_3_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2928:1: ( rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2928:2: rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0_in_rule__FunctionLibraryBlipGroup__Alternatives_36209);
+                    rule__FunctionLibraryBlipGroup__FunctionsAssignment_3_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsAssignment_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2932:6: ( ( rule__FunctionLibraryBlipGroup__TestsAssignment_3_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2932:6: ( ( rule__FunctionLibraryBlipGroup__TestsAssignment_3_1 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2933:1: ( rule__FunctionLibraryBlipGroup__TestsAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsAssignment_3_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2934:1: ( rule__FunctionLibraryBlipGroup__TestsAssignment_3_1 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2934:2: rule__FunctionLibraryBlipGroup__TestsAssignment_3_1
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryBlipGroup__TestsAssignment_3_1_in_rule__FunctionLibraryBlipGroup__Alternatives_36227);
+                    rule__FunctionLibraryBlipGroup__TestsAssignment_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsAssignment_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2938:6: ( ( rule__FunctionLibraryBlipGroup__RatesAssignment_3_2 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2938:6: ( ( rule__FunctionLibraryBlipGroup__RatesAssignment_3_2 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2939:1: ( rule__FunctionLibraryBlipGroup__RatesAssignment_3_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesAssignment_3_2()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2940:1: ( rule__FunctionLibraryBlipGroup__RatesAssignment_3_2 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2940:2: rule__FunctionLibraryBlipGroup__RatesAssignment_3_2
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryBlipGroup__RatesAssignment_3_2_in_rule__FunctionLibraryBlipGroup__Alternatives_36245);
+                    rule__FunctionLibraryBlipGroup__RatesAssignment_3_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesAssignment_3_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FunctionLibraryBlipGroup__Alternatives_3"
+
+
+    // $ANTLR start "rule__FunctionLibraryStatemachineGroup__Alternatives_3"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2949:1: rule__FunctionLibraryStatemachineGroup__Alternatives_3 : ( ( ( rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0 ) ) | ( ( rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1 ) ) | ( ( rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2 ) ) );
+    public final void rule__FunctionLibraryStatemachineGroup__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2953:1: ( ( ( rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0 ) ) | ( ( rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1 ) ) | ( ( rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2 ) ) )
+            int alt7=3;
+            switch ( input.LA(1) ) {
+            case 71:
+                {
+                alt7=1;
+                }
+                break;
+            case 70:
+                {
+                alt7=2;
+                }
+                break;
+            case 63:
+                {
+                alt7=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2954:1: ( ( rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2954:1: ( ( rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2955:1: ( rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsAssignment_3_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2956:1: ( rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2956:2: rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0_in_rule__FunctionLibraryStatemachineGroup__Alternatives_36278);
+                    rule__FunctionLibraryStatemachineGroup__OperationsAssignment_3_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsAssignment_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2960:6: ( ( rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2960:6: ( ( rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2961:1: ( rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsAssignment_3_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2962:1: ( rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2962:2: rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1_in_rule__FunctionLibraryStatemachineGroup__Alternatives_36296);
+                    rule__FunctionLibraryStatemachineGroup__GuardsAssignment_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsAssignment_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2966:6: ( ( rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2966:6: ( ( rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2967:1: ( rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsAssignment_3_2()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2968:1: ( rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2968:2: rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2
+                    {
+                    pushFollow(FOLLOW_rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2_in_rule__FunctionLibraryStatemachineGroup__Alternatives_36314);
+                    rule__FunctionLibraryStatemachineGroup__FunctionsAssignment_3_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsAssignment_3_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FunctionLibraryStatemachineGroup__Alternatives_3"
+
+
+    // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2977:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2981:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2982:1: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2982:1: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2983:1: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2984:1: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2984:2: rule__XAnnotation__Group_3_1_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_16347);
+                    rule__XAnnotation__Group_3_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2988:6: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2988:6: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2989:1: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2990:1: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2990:2: rule__XAnnotation__ValueAssignment_3_1_1
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_16365);
+                    rule__XAnnotation__ValueAssignment_3_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Alternatives_3_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:2999:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3003:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt9=2;
+            alt9 = dfa9.predict(input);
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3004:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3004:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3005:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3006:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3006:2: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives6398);
+                    rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3010:6: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3010:6: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3011:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3012:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3012:2: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives6416);
+                    rule__XAnnotationElementValueOrCommaList__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3021:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3025:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt10=2;
+            alt10 = dfa10.predict(input);
+            switch (alt10) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3026:1: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3026:1: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3027:1: ( rule__XAnnotationElementValue__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3028:1: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3028:2: rule__XAnnotationElementValue__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives6449);
+                    rule__XAnnotationElementValue__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3032:6: ( ruleXAnnotationOrExpression )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3032:6: ( ruleXAnnotationOrExpression )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3033:1: ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives6467);
+                    ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3043:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3047:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==72) ) {
+                alt11=1;
+            }
+            else if ( ((LA11_0>=RULE_ID && LA11_0<=RULE_STRING)||LA11_0==27||(LA11_0>=34 && LA11_0<=35)||LA11_0==40||(LA11_0>=45 && LA11_0<=50)||LA11_0==52||LA11_0==64||(LA11_0>=74 && LA11_0<=75)||LA11_0==79||LA11_0==81||(LA11_0>=85 && LA11_0<=93)||LA11_0==95||LA11_0==103) ) {
+                alt11=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3048:1: ( ruleXAnnotation )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3048:1: ( ruleXAnnotation )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3049:1: ruleXAnnotation
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives6499);
+                    ruleXAnnotation();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3054:6: ( ruleXExpression )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3054:6: ( ruleXExpression )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3055:1: ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives6516);
+                    ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationOrExpression__Alternatives"
+
+
+    // $ANTLR start "rule__XAssignment__Alternatives"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3065:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    public final void rule__XAssignment__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3069:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt12=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA12_1 = input.LA(2);
+
+                if ( (LA12_1==EOF||(LA12_1>=RULE_ID && LA12_1<=RULE_STRING)||(LA12_1>=14 && LA12_1<=50)||(LA12_1>=52 && LA12_1<=53)||(LA12_1>=64 && LA12_1<=65)||LA12_1==67||(LA12_1>=73 && LA12_1<=96)||(LA12_1>=99 && LA12_1<=100)||(LA12_1>=102 && LA12_1<=103)) ) {
+                    alt12=2;
+                }
+                else if ( (LA12_1==13) ) {
+                    alt12=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 12, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 45:
+                {
+                int LA12_2 = input.LA(2);
+
+                if ( (LA12_2==EOF||(LA12_2>=RULE_ID && LA12_2<=RULE_STRING)||(LA12_2>=14 && LA12_2<=50)||(LA12_2>=52 && LA12_2<=53)||(LA12_2>=64 && LA12_2<=65)||LA12_2==67||(LA12_2>=73 && LA12_2<=96)||(LA12_2>=99 && LA12_2<=100)||(LA12_2>=102 && LA12_2<=103)) ) {
+                    alt12=2;
+                }
+                else if ( (LA12_2==13) ) {
+                    alt12=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 12, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 46:
+                {
+                int LA12_3 = input.LA(2);
+
+                if ( (LA12_3==13) ) {
+                    alt12=1;
+                }
+                else if ( (LA12_3==EOF||(LA12_3>=RULE_ID && LA12_3<=RULE_STRING)||(LA12_3>=14 && LA12_3<=50)||(LA12_3>=52 && LA12_3<=53)||(LA12_3>=64 && LA12_3<=65)||LA12_3==67||(LA12_3>=73 && LA12_3<=96)||(LA12_3>=99 && LA12_3<=100)||(LA12_3>=102 && LA12_3<=103)) ) {
+                    alt12=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 12, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 47:
+                {
+                int LA12_4 = input.LA(2);
+
+                if ( (LA12_4==EOF||(LA12_4>=RULE_ID && LA12_4<=RULE_STRING)||(LA12_4>=14 && LA12_4<=50)||(LA12_4>=52 && LA12_4<=53)||(LA12_4>=64 && LA12_4<=65)||LA12_4==67||(LA12_4>=73 && LA12_4<=96)||(LA12_4>=99 && LA12_4<=100)||(LA12_4>=102 && LA12_4<=103)) ) {
+                    alt12=2;
+                }
+                else if ( (LA12_4==13) ) {
+                    alt12=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 12, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 48:
+                {
+                int LA12_5 = input.LA(2);
+
+                if ( (LA12_5==13) ) {
+                    alt12=1;
+                }
+                else if ( (LA12_5==EOF||(LA12_5>=RULE_ID && LA12_5<=RULE_STRING)||(LA12_5>=14 && LA12_5<=50)||(LA12_5>=52 && LA12_5<=53)||(LA12_5>=64 && LA12_5<=65)||LA12_5==67||(LA12_5>=73 && LA12_5<=96)||(LA12_5>=99 && LA12_5<=100)||(LA12_5>=102 && LA12_5<=103)) ) {
+                    alt12=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 12, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case RULE_STRING:
+            case 27:
+            case 34:
+            case 35:
+            case 40:
+            case 49:
+            case 50:
+            case 52:
+            case 64:
+            case 74:
+            case 75:
+            case 79:
+            case 81:
+            case 85:
+            case 86:
+            case 87:
+            case 88:
+            case 89:
+            case 90:
+            case 91:
+            case 92:
+            case 93:
+            case 95:
+            case 103:
+                {
+                alt12=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt12) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3070:1: ( ( rule__XAssignment__Group_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3070:1: ( ( rule__XAssignment__Group_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3071:1: ( rule__XAssignment__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3072:1: ( rule__XAssignment__Group_0__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3072:2: rule__XAssignment__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives6548);
+                    rule__XAssignment__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3076:6: ( ( rule__XAssignment__Group_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3076:6: ( ( rule__XAssignment__Group_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3077:1: ( rule__XAssignment__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3078:1: ( rule__XAssignment__Group_1__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3078:2: rule__XAssignment__Group_1__0
+                    {
+                    pushFollow(FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives6566);
+                    rule__XAssignment__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Alternatives"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Alternatives"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3087:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    public final void rule__OpMultiAssign__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3091:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt13=7;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt13=1;
+                }
+                break;
+            case 17:
+                {
+                alt13=2;
+                }
+                break;
+            case 18:
+                {
+                alt13=3;
+                }
+                break;
+            case 19:
+                {
+                alt13=4;
+                }
+                break;
+            case 20:
+                {
+                alt13=5;
+                }
+                break;
+            case 27:
+                {
+                alt13=6;
+                }
+                break;
+            case 26:
+                {
+                alt13=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt13) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3092:1: ( '+=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3092:1: ( '+=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3093:1: '+='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,16,FOLLOW_16_in_rule__OpMultiAssign__Alternatives6600); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3100:6: ( '-=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3100:6: ( '-=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3101:1: '-='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+                    match(input,17,FOLLOW_17_in_rule__OpMultiAssign__Alternatives6620); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3108:6: ( '*=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3108:6: ( '*=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3109:1: '*='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+                    match(input,18,FOLLOW_18_in_rule__OpMultiAssign__Alternatives6640); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3116:6: ( '/=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3116:6: ( '/=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3117:1: '/='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+                    match(input,19,FOLLOW_19_in_rule__OpMultiAssign__Alternatives6660); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3124:6: ( '%=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3124:6: ( '%=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3125:1: '%='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+                    match(input,20,FOLLOW_20_in_rule__OpMultiAssign__Alternatives6680); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3132:6: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3132:6: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3133:1: ( rule__OpMultiAssign__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3134:1: ( rule__OpMultiAssign__Group_5__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3134:2: rule__OpMultiAssign__Group_5__0
+                    {
+                    pushFollow(FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives6699);
+                    rule__OpMultiAssign__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3138:6: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3138:6: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3139:1: ( rule__OpMultiAssign__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3140:1: ( rule__OpMultiAssign__Group_6__0 )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3140:2: rule__OpMultiAssign__Group_6__0
+                    {
+                    pushFollow(FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives6717);
+                    rule__OpMultiAssign__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Alternatives"
+
+
+    // $ANTLR start "rule__OpEquality__Alternatives"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/antlr/internal/InternalFunctionLibraryDsl.g:3149:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    public final void rule__OpEquality__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/internal/FunctionLibraryDslActivator.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/internal/FunctionLibraryDslActivator.java
new file mode 100644
index 0000000..494c22c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/internal/FunctionLibraryDslActivator.java
@@ -0,0 +1,106 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class FunctionLibraryDslActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_FUNCTIONLIBRARYDSL_FUNCTIONLIBRARYDSL = "org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl";
+	
+	private static final Logger logger = Logger.getLogger(FunctionLibraryDslActivator.class);
+	
+	private static FunctionLibraryDslActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static FunctionLibraryDslActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_FUNCTIONLIBRARYDSL_FUNCTIONLIBRARYDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDslRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_FUNCTIONLIBRARYDSL_FUNCTIONLIBRARYDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDslUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLDocumentationTranslator.java
new file mode 100644
index 0000000..1ae3bd6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLDocumentationTranslator.java
@@ -0,0 +1,32 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui;
+
+import java.util.ResourceBundle;
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+
+public class FunctionLibraryDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
+	 
+    private static FunctionLibraryDSLDocumentationTranslator INSTANCE = new FunctionLibraryDSLDocumentationTranslator();
+
+    public static BasicDSLDocumentationTranslator instance() {
+        return INSTANCE;
+    }
+    
+    @Override
+    protected ResourceBundle getResourceBundle() {
+        return java.util.ResourceBundle.getBundle(GeneratorConstants.I18N_RESOURCE_FULL_BUNDLE_NAME, getLocale(), getClass().getClassLoader());
+    }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHover.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHover.java
new file mode 100644
index 0000000..4d8f8db
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHover.java
@@ -0,0 +1,25 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui;
+
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHover;
+
+public class FunctionLibraryDSLEObjectHover extends BasicDSLEObjectHover {
+	
+	@Override
+	public IEObjectHoverProvider getHoverProvider() {
+		return FunctionLibraryDSLEObjectHoverProvider.instance();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHoverDocumentationProvider.java
new file mode 100644
index 0000000..e842140
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHoverDocumentationProvider.java
@@ -0,0 +1,35 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider;
+
+public class FunctionLibraryDSLEObjectHoverDocumentationProvider extends BasicDSLEObjectHoverDocumentationProvider {
+	 
+    private static FunctionLibraryDSLEObjectHoverDocumentationProvider INSTANCE;
+
+    public static FunctionLibraryDSLEObjectHoverDocumentationProvider instance() {
+        return INSTANCE;
+    }
+
+    public FunctionLibraryDSLEObjectHoverDocumentationProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    @Override
+    protected BasicDSLDocumentationTranslator getTranslator() {
+        return FunctionLibraryDSLDocumentationTranslator.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHoverProvider.java
new file mode 100644
index 0000000..5965b75
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDSLEObjectHoverProvider.java
@@ -0,0 +1,36 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui;
+
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;
+
+public class FunctionLibraryDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
+	 
+    private static FunctionLibraryDSLEObjectHoverProvider INSTANCE;
+
+    public static FunctionLibraryDSLEObjectHoverProvider instance() {
+        return INSTANCE;
+    }
+
+    public FunctionLibraryDSLEObjectHoverProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    @Override
+    public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
+        return FunctionLibraryDSLEObjectHoverDocumentationProvider.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDslUiModule.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDslUiModule.java
new file mode 100644
index 0000000..4aeabef
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/FunctionLibraryDslUiModule.java
@@ -0,0 +1,51 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.functionlibrarydsl.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class FunctionLibraryDslUiModule extends org.eclipse.osbp.xtext.functionlibrarydsl.ui.AbstractFunctionLibraryDslUiModule {
+	
+	private static Logger LOGGER = LoggerFactory.getLogger(FunctionLibraryDslUiModule.class);
+
+	public FunctionLibraryDslUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	    BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+	}
+	
+	@Override
+	public Class<? extends IEObjectHover> bindIEObjectHover() {
+	    return FunctionLibraryDSLEObjectHover.class;
+	}
+	
+	@Override
+	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
+	    return FunctionLibraryDSLEObjectHoverProvider.class;
+	}
+	
+	@Override
+	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+	    return FunctionLibraryDSLEObjectHoverDocumentationProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/FunctionLibraryDslProposalProvider.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/FunctionLibraryDslProposalProvider.xtend
new file mode 100644
index 0000000..ab0be60
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/FunctionLibraryDslProposalProvider.xtend
@@ -0,0 +1,62 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist
+
+import com.google.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.jface.viewers.StyledString
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDSLDocumentationTranslator
+import org.eclipse.xtext.Keyword
+import org.eclipse.xtext.RuleCall
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+class FunctionLibraryDslProposalProvider extends AbstractFunctionLibraryDslProposalProvider {
+
+    @Inject TerminalsProposalProvider provider
+	@Inject BasicDSLProposalProviderHelper providerHelper
+
+	/**
+	 * This override will enable 1 length non letter characters as keyword.
+	 */
+	override protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+		true
+	}
+
+	override protected StyledString getKeywordDisplayString(Keyword keyword) {
+		return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword,
+			FunctionLibraryDSLDocumentationTranslator.instance())
+	}
+
+	override public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+	}
+
+	// ------------------------ delegates to TerminalsProposalProvider -----------------
+	override public void complete_ValidID(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor)
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..49cce9b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslDescriptionLabelProvider.xtend
@@ -0,0 +1,38 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling
+
+//import org.eclipse.xtext.resource.IEObjectDescription
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class FunctionLibraryDslDescriptionLabelProvider extends org.eclipse.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name.toString
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslLabelProvider.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslLabelProvider.xtend
new file mode 100644
index 0000000..46de824
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslLabelProvider.xtend
@@ -0,0 +1,114 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling
+
+import com.google.inject.Inject
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference
+import org.eclipse.xtext.xbase.XExpression
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class FunctionLibraryDslLabelProvider extends BasicDSLLabelProvider {
+
+	@Inject
+	new(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	/* ********************************************************************************************** */
+	/**			Provides outline text for FunctionLibrary-DSL.
+	 *
+	 *			Uses common (default) text for package and for import element.
+	 *
+	 *	@see	BasicDSLLabelProvider.text(Object)
+	 * 
+	 *	@param	o	Current outline element
+	 *
+	 *	@return	String instance.
+	 *
+	 *	@since	@D 151007, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	 override text ( Object o ) {
+		switch (o) {
+			FunctionLibraryConverterGroup	: generateText( o, 'converter group', o.name )
+			FunctionLibraryGroup			: generateText( o, 'group'			, o.name )
+			FunctionLibraryRating			: generateText( o, 'rating'			, o.name )
+			FunctionLibraryFunction			: generateText( o, 'function'		, o.name )
+			FunctionLibraryTest				: generateText( o, 'test'			, o.name )
+			FunctionLibraryRate				: generateText( o, 'rate'			, o.name )
+			FunctionLibraryParameter		: generateText( o, 'params'			, o.name )
+			FunctionLibraryRatingItem		: generateText( o, 'rating item'	, o.name )
+			JvmParameterizedTypeReference	: generateText( o, 'type reference'	, (o as JvmParameterizedTypeReference ).simpleName )
+			XExpression					 	: generateText( o, 'expression' )
+			FunctionConvertToModel	 		: 'model converter'
+			FunctionConvertToPresentation	: 'presentation converter'
+//			FunctionLibraryRatingItem		: ''
+			default	: super.text( o )
+		}
+	}
+
+
+	/* ********************************************************************************************** */
+	/**			Provides outline images for FunctionLibrary-DSL.
+	 *
+	 *			Uses common (default) image for package and for import element.
+	 *
+	 *	@see	BasicDSLLabelProvider.image(Object)
+	 * 
+	 *	@param	o	Current outline element
+	 *
+	 *	@return	Image instance if requested image file was found, return value of overridden superclass
+	 *			method otherwise.
+	 *
+	 *	@since	@D 151007, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	override image ( Object o ) {
+		switch (o) {
+			FunctionLibraryModel			: getInternalImage( 'model.png'      , class )
+			FunctionLibraryGroup			: getInternalImage( 'group.png'      , class )
+//			FunctionLibraryGroup			: getInternalImage( 'dsl_functionlibrary.png', class )
+			FunctionLibraryFunction			: getInternalImage( 'function2.png'  , class )
+			FunctionLibraryTest				: getInternalImage( 'testrun3.png'   , class )
+			FunctionLibraryRate				: getInternalImage( 'enum-object.png', class )
+			FunctionLibraryParameter		: getInternalImage( 'params.png'     , class )
+			XExpression						: getInternalImage( 'expression.png' , class )
+			JvmParameterizedTypeReference	: getInternalImage( 'reference.png'  , class )
+			FunctionConvertToModel	 		: getInternalImage( 'converter.png'  , class )
+			FunctionConvertToPresentation	: getInternalImage( 'converter.png'  , class )
+			default		: super.image( o )
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/outline/FunctionLibraryDslOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/outline/FunctionLibraryDslOutlineTreeProvider.xtend
new file mode 100644
index 0000000..5e8f6cb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/outline/FunctionLibraryDslOutlineTreeProvider.xtend
@@ -0,0 +1,27 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class FunctionLibraryDslOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/quickfix/FunctionLibraryDslQuickfixProvider.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/quickfix/FunctionLibraryDslQuickfixProvider.xtend
new file mode 100644
index 0000000..a0e31c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/src/org/eclipse/osbp/xtext/functionlibrarydsl/ui/quickfix/FunctionLibraryDslQuickfixProvider.xtend
@@ -0,0 +1,40 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.quickfix
+
+//import org.eclipse.xtext.ui.editor.quickfix.Fix
+//import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
+//import org.eclipse.xtext.validation.Issue
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+class FunctionLibraryDslQuickfixProvider extends org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider {
+
+//	@Fix(MyDslValidator::INVALID_NAME)
+//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+//			context |
+//			val xtextDocument = context.xtextDocument
+//			val firstLetter = xtextDocument.get(issue.offset, 1)
+//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+//		]
+//	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/templates/templates.xml b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/templates/templates.xml
new file mode 100644
index 0000000..07a788c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/templates/templates.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates>
+</templates>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/FunctionLibraryDslProposalProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/FunctionLibraryDslProposalProvider.java
new file mode 100644
index 0000000..07955eb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/contentassist/FunctionLibraryDslProposalProvider.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
+import org.eclipse.osbp.xtext.functionlibrarydsl.ui.FunctionLibraryDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.functionlibrarydsl.ui.contentassist.AbstractFunctionLibraryDslProposalProvider;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslProposalProvider extends AbstractFunctionLibraryDslProposalProvider {
+  @Inject
+  private TerminalsProposalProvider provider;
+  
+  @Inject
+  private BasicDSLProposalProviderHelper providerHelper;
+  
+  /**
+   * This override will enable 1 length non letter characters as keyword.
+   */
+  protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
+    return true;
+  }
+  
+  protected StyledString getKeywordDisplayString(final Keyword keyword) {
+    BasicDSLDocumentationTranslator _instance = FunctionLibraryDSLDocumentationTranslator.instance();
+    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance);
+  }
+  
+  public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+  }
+  
+  public void complete_ValidID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_ID(model, ruleCall, context, acceptor);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslDescriptionLabelProvider.java
new file mode 100644
index 0000000..1b94427
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslDescriptionLabelProvider.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling;
+
+import org.eclipse.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslDescriptionLabelProvider extends XbaseDescriptionLabelProvider {
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslLabelProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslLabelProvider.java
new file mode 100644
index 0000000..3c07194
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/labeling/FunctionLibraryDslLabelProvider.java
@@ -0,0 +1,214 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.labeling;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslLabelProvider extends BasicDSLLabelProvider {
+  @Inject
+  public FunctionLibraryDslLabelProvider(final AdapterFactoryLabelProvider delegate) {
+    super(delegate);
+  }
+  
+  public Object text(final Object o) {
+    Object _switchResult = null;
+    boolean _matched = false;
+    if (!_matched) {
+      if (o instanceof FunctionLibraryConverterGroup) {
+        _matched=true;
+        String _name = ((FunctionLibraryConverterGroup)o).getName();
+        _switchResult = this.generateText(o, "converter group", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryGroup) {
+        _matched=true;
+        String _name = ((FunctionLibraryGroup)o).getName();
+        _switchResult = this.generateText(o, "group", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryRating) {
+        _matched=true;
+        String _name = ((FunctionLibraryRating)o).getName();
+        _switchResult = this.generateText(o, "rating", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryFunction) {
+        _matched=true;
+        String _name = ((FunctionLibraryFunction)o).getName();
+        _switchResult = this.generateText(o, "function", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryTest) {
+        _matched=true;
+        String _name = ((FunctionLibraryTest)o).getName();
+        _switchResult = this.generateText(o, "test", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryRate) {
+        _matched=true;
+        String _name = ((FunctionLibraryRate)o).getName();
+        _switchResult = this.generateText(o, "rate", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryParameter) {
+        _matched=true;
+        String _name = ((FunctionLibraryParameter)o).getName();
+        _switchResult = this.generateText(o, "params", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryRatingItem) {
+        _matched=true;
+        String _name = ((FunctionLibraryRatingItem)o).getName();
+        _switchResult = this.generateText(o, "rating item", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof JvmParameterizedTypeReference) {
+        _matched=true;
+        String _simpleName = ((JvmParameterizedTypeReference) o).getSimpleName();
+        _switchResult = this.generateText(o, "type reference", _simpleName);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof XExpression) {
+        _matched=true;
+        _switchResult = this.generateText(o, "expression");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionConvertToModel) {
+        _matched=true;
+        _switchResult = "model converter";
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionConvertToPresentation) {
+        _matched=true;
+        _switchResult = "presentation converter";
+      }
+    }
+    if (!_matched) {
+      _switchResult = super.text(o);
+    }
+    return _switchResult;
+  }
+  
+  public Object image(final Object o) {
+    Object _switchResult = null;
+    boolean _matched = false;
+    if (!_matched) {
+      if (o instanceof FunctionLibraryModel) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("model.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryGroup) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("group.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryFunction) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("function2.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryTest) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("testrun3.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryRate) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("enum-object.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionLibraryParameter) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("params.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof XExpression) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("expression.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof JvmParameterizedTypeReference) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("reference.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionConvertToModel) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("converter.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof FunctionConvertToPresentation) {
+        _matched=true;
+        Class<? extends FunctionLibraryDslLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("converter.png", _class);
+      }
+    }
+    if (!_matched) {
+      _switchResult = super.image(o);
+    }
+    return _switchResult;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/outline/FunctionLibraryDslOutlineTreeProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/outline/FunctionLibraryDslOutlineTreeProvider.java
new file mode 100644
index 0000000..a8ac677
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/outline/FunctionLibraryDslOutlineTreeProvider.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * Customization of the default outline structure.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslOutlineTreeProvider extends DefaultOutlineTreeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/quickfix/FunctionLibraryDslQuickfixProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/quickfix/FunctionLibraryDslQuickfixProvider.java
new file mode 100644
index 0000000..9f18e8f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl.ui/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/ui/quickfix/FunctionLibraryDslQuickfixProvider.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.ui.quickfix;
+
+import org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider;
+
+/**
+ * Custom quickfixes.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslQuickfixProvider extends XbaseWithAnnotationsQuickfixProvider {
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/.project b/org.eclipse.osbp.xtext.functionlibrarydsl/.project
new file mode 100644
index 0000000..3358c4b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.functionlibrarydsl</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/LICENSE.txt b/org.eclipse.osbp.xtext.functionlibrarydsl/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.functionlibrarydsl/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..865ae9b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/META-INF/MANIFEST.MF
@@ -0,0 +1,77 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.functionlibrarydsl
+Bundle-SymbolicName: org.eclipse.osbp.xtext.functionlibrarydsl;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",
+ org.apache.xerces;bundle-version="2.9.0",
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.apache.commons.lang,
+ org.apache.commons.logging,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.apache.log4j,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.common,
+ org.antlr.runtime,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore.lib;bundle-version="1.1.0",
+ org.eclipse.emf.ecore.xcore,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.runtime;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamart.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.mwe2.launch;bundle-version="2.7.1";resolution:=optional,
+ org.eclipse.osbp.xtext.functionlibrary.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osgi.services;bundle-version="3.4.0"
+Import-Package: javax.validation;version="1.1.0",
+ javax.validation.constraints;version="1.1.0",
+ org.apache.log4j,
+ org.eclipse.e4.core.di.extensions,
+ org.eclipse.osbp.bpm.api;version="0.9.0",
+ org.eclipse.osbp.eventbroker;version="0.9.0",
+ org.eclipse.osbp.runtime.common.i18n;version="0.9.0",
+ org.eclipse.osbp.ui.api.functionlibrary;version="0.9.0",
+ org.eclipse.osbp.ui.api.pos;version="0.9.0",
+ org.eclipse.osbp.ui.api.user;version="0.9.0",
+ org.eclipse.osbp.user;version="0.9.0",
+ org.eclipse.osbp.utils.xtext;version="0.9.0",
+ org.eclipse.osbp.vaaclipse.publicapi.authentication;version="0.9.0",
+ org.eclipse.osbp.xtext.basic.generator;version="0.9.0",
+ org.eclipse.osbp.xtext.basic.validation;version="0.9.0",
+ org.eclipse.osbp.xtext.datamart.common.olap;version="0.9.0",
+ org.eclipse.osbp.xtext.table.common,
+ org.jbpm.task,
+ org.jbpm.task.query,
+ org.osgi.service.event
+Export-Package: org.eclipse.osbp.xtext.functionlibrarydsl;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.formatting;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.impl;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.serializer;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.services;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.util;version="0.9.0",
+ org.eclipse.osbp.xtext.functionlibrarydsl.validation;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.functionlibrarydsl.Activator
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/about.html b/org.eclipse.osbp.xtext.functionlibrarydsl/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/about.ini b/org.eclipse.osbp.xtext.functionlibrarydsl/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/about.mappings b/org.eclipse.osbp.xtext.functionlibrarydsl/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/about.properties b/org.eclipse.osbp.xtext.functionlibrarydsl/about.properties
new file mode 100644
index 0000000..4f9fb71
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.functionlibrarydsl
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/build.properties b/org.eclipse.osbp.xtext.functionlibrarydsl/build.properties
new file mode 100644
index 0000000..aab9ba0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/build.properties
@@ -0,0 +1,17 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/,\
+           emf-gen/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  model/,\
+               META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionConvertToModel.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionConvertToModel.java
new file mode 100644
index 0000000..268c002
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionConvertToModel.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Convert To Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionConvertToModel()
+ * @model
+ * @generated
+ */
+public interface FunctionConvertToModel extends FunctionLibraryBaseFunction {
+} // FunctionConvertToModel
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionConvertToPresentation.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionConvertToPresentation.java
new file mode 100644
index 0000000..df825ca
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionConvertToPresentation.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Convert To Presentation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionConvertToPresentation()
+ * @model
+ * @generated
+ */
+public interface FunctionConvertToPresentation extends FunctionLibraryBaseFunction {
+} // FunctionConvertToPresentation
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryBaseFunction.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryBaseFunction.java
new file mode 100644
index 0000000..e145793
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryBaseFunction.java
@@ -0,0 +1,109 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Base Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getParams <em>Params</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryBaseFunction()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryBaseFunction extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryBaseFunction_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Params</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Params</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Params</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryBaseFunction_Params()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryParameter> getParams();
+
+	/**
+	 * Returns the value of the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Body</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Body</em>' containment reference.
+	 * @see #setBody(XExpression)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryBaseFunction_Body()
+	 * @model containment="true"
+	 * @generated
+	 */
+	XExpression getBody();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getBody <em>Body</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Body</em>' containment reference.
+	 * @see #getBody()
+	 * @generated
+	 */
+	void setBody(XExpression value);
+
+} // FunctionLibraryBaseFunction
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryBlipGroup.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryBlipGroup.java
new file mode 100644
index 0000000..41b29f9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryBlipGroup.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Blip Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryBlipGroup()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryBlipGroup extends FunctionLibraryGroup {
+} // FunctionLibraryBlipGroup
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryConverterGroup.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryConverterGroup.java
new file mode 100644
index 0000000..bd3c1c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryConverterGroup.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Converter Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToModelDatatype <em>Convert To Model Datatype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToPresentationDatatype <em>Convert To Presentation Datatype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryConverterGroup()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryConverterGroup extends FunctionLibraryGroup {
+	/**
+	 * Returns the value of the '<em><b>Convert To Model Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Convert To Model Datatype</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Convert To Model Datatype</em>' reference.
+	 * @see #setConvertToModelDatatype(LDataType)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryConverterGroup_ConvertToModelDatatype()
+	 * @model
+	 * @generated
+	 */
+	LDataType getConvertToModelDatatype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToModelDatatype <em>Convert To Model Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Convert To Model Datatype</em>' reference.
+	 * @see #getConvertToModelDatatype()
+	 * @generated
+	 */
+	void setConvertToModelDatatype(LDataType value);
+
+	/**
+	 * Returns the value of the '<em><b>Convert To Presentation Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Convert To Presentation Datatype</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Convert To Presentation Datatype</em>' reference.
+	 * @see #setConvertToPresentationDatatype(LDataType)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryConverterGroup_ConvertToPresentationDatatype()
+	 * @model
+	 * @generated
+	 */
+	LDataType getConvertToPresentationDatatype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToPresentationDatatype <em>Convert To Presentation Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Convert To Presentation Datatype</em>' reference.
+	 * @see #getConvertToPresentationDatatype()
+	 * @generated
+	 */
+	void setConvertToPresentationDatatype(LDataType value);
+
+} // FunctionLibraryConverterGroup
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDSLFactory.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDSLFactory.java
new file mode 100644
index 0000000..d813b21
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDSLFactory.java
@@ -0,0 +1,197 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage
+ * @generated
+ */
+public interface FunctionLibraryDSLFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	FunctionLibraryDSLFactory eINSTANCE = org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Model</em>'.
+	 * @generated
+	 */
+	FunctionLibraryModel createFunctionLibraryModel();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Package</em>'.
+	 * @generated
+	 */
+	FunctionLibraryPackage createFunctionLibraryPackage();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Group</em>'.
+	 * @generated
+	 */
+	FunctionLibraryGroup createFunctionLibraryGroup();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Blip Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Blip Group</em>'.
+	 * @generated
+	 */
+	FunctionLibraryBlipGroup createFunctionLibraryBlipGroup();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Statemachine Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Statemachine Group</em>'.
+	 * @generated
+	 */
+	FunctionLibraryStatemachineGroup createFunctionLibraryStatemachineGroup();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Converter Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Converter Group</em>'.
+	 * @generated
+	 */
+	FunctionLibraryConverterGroup createFunctionLibraryConverterGroup();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Rating</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Rating</em>'.
+	 * @generated
+	 */
+	FunctionLibraryRating createFunctionLibraryRating();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Rating Item</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Rating Item</em>'.
+	 * @generated
+	 */
+	FunctionLibraryRatingItem createFunctionLibraryRatingItem();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Base Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Base Function</em>'.
+	 * @generated
+	 */
+	FunctionLibraryBaseFunction createFunctionLibraryBaseFunction();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Function</em>'.
+	 * @generated
+	 */
+	FunctionLibraryFunction createFunctionLibraryFunction();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Test</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Test</em>'.
+	 * @generated
+	 */
+	FunctionLibraryTest createFunctionLibraryTest();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Rate</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Rate</em>'.
+	 * @generated
+	 */
+	FunctionLibraryRate createFunctionLibraryRate();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Guard</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Guard</em>'.
+	 * @generated
+	 */
+	FunctionLibraryGuard createFunctionLibraryGuard();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Operation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Operation</em>'.
+	 * @generated
+	 */
+	FunctionLibraryOperation createFunctionLibraryOperation();
+
+	/**
+	 * Returns a new object of class '<em>Function Convert To Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Convert To Model</em>'.
+	 * @generated
+	 */
+	FunctionConvertToModel createFunctionConvertToModel();
+
+	/**
+	 * Returns a new object of class '<em>Function Convert To Presentation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Convert To Presentation</em>'.
+	 * @generated
+	 */
+	FunctionConvertToPresentation createFunctionConvertToPresentation();
+
+	/**
+	 * Returns a new object of class '<em>Function Library Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Function Library Parameter</em>'.
+	 * @generated
+	 */
+	FunctionLibraryParameter createFunctionLibraryParameter();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	FunctionLibraryDSLPackage getFunctionLibraryDSLPackage();
+
+} //FunctionLibraryDSLFactory
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDSLPackage.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDSLPackage.java
new file mode 100644
index 0000000..16cb08d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDSLPackage.java
@@ -0,0 +1,2048 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='functionlibrary' modelName='FunctionLibraryDSL' prefix='FunctionLibraryDSL' updateClasspath='false' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License v1.0 \r\n which accompanies this distribution, and is available at \r\n http://www.eclipse.org/legal/epl-v10.html \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tChristophe Loetz - Initial implementation\r\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='functionLibraryDSL'"
+ * @generated
+ */
+public interface FunctionLibraryDSLPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "functionlibrarydsl";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "functionLibraryDSL";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	FunctionLibraryDSLPackage eINSTANCE = org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryModelImpl <em>Function Library Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryModelImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryModel()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Pckg</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_MODEL__PCKG = 0;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Function Library Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_MODEL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl <em>Function Library Package</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryPackage()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_PACKAGE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE__NAME = OSBPTypesPackage.LPACKAGE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
+
+	/**
+	 * The feature id for the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Ratings</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE__RATINGS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE__GROUPS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Converters</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE__CONVERTERS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE_FEATURE_COUNT = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Function Library Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PACKAGE_OPERATION_COUNT = OSBPTypesPackage.LPACKAGE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl <em>Function Library Group</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryGroup()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_GROUP = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__FUNCTIONS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Rates</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__RATES = 2;
+
+	/**
+	 * The feature id for the '<em><b>Tests</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__TESTS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Guards</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__GUARDS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__OPERATIONS = 5;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Model</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL = 6;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Presentation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION = 7;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP_FEATURE_COUNT = 8;
+
+	/**
+	 * The number of operations of the '<em>Function Library Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GROUP_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBlipGroupImpl <em>Function Library Blip Group</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBlipGroupImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryBlipGroup()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__NAME = FUNCTION_LIBRARY_GROUP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__FUNCTIONS = FUNCTION_LIBRARY_GROUP__FUNCTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Rates</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__RATES = FUNCTION_LIBRARY_GROUP__RATES;
+
+	/**
+	 * The feature id for the '<em><b>Tests</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__TESTS = FUNCTION_LIBRARY_GROUP__TESTS;
+
+	/**
+	 * The feature id for the '<em><b>Guards</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__GUARDS = FUNCTION_LIBRARY_GROUP__GUARDS;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__OPERATIONS = FUNCTION_LIBRARY_GROUP__OPERATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Model</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__CONVERT_TO_MODEL = FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Presentation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP__CONVERT_TO_PRESENTATION = FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Blip Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP_FEATURE_COUNT = FUNCTION_LIBRARY_GROUP_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Library Blip Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BLIP_GROUP_OPERATION_COUNT = FUNCTION_LIBRARY_GROUP_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryStatemachineGroupImpl <em>Function Library Statemachine Group</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryStatemachineGroupImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryStatemachineGroup()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__NAME = FUNCTION_LIBRARY_GROUP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__FUNCTIONS = FUNCTION_LIBRARY_GROUP__FUNCTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Rates</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__RATES = FUNCTION_LIBRARY_GROUP__RATES;
+
+	/**
+	 * The feature id for the '<em><b>Tests</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__TESTS = FUNCTION_LIBRARY_GROUP__TESTS;
+
+	/**
+	 * The feature id for the '<em><b>Guards</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__GUARDS = FUNCTION_LIBRARY_GROUP__GUARDS;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__OPERATIONS = FUNCTION_LIBRARY_GROUP__OPERATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Model</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__CONVERT_TO_MODEL = FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Presentation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP__CONVERT_TO_PRESENTATION = FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Statemachine Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP_FEATURE_COUNT = FUNCTION_LIBRARY_GROUP_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Library Statemachine Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_STATEMACHINE_GROUP_OPERATION_COUNT = FUNCTION_LIBRARY_GROUP_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryConverterGroupImpl <em>Function Library Converter Group</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryConverterGroupImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryConverterGroup()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__NAME = FUNCTION_LIBRARY_GROUP__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Functions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__FUNCTIONS = FUNCTION_LIBRARY_GROUP__FUNCTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Rates</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__RATES = FUNCTION_LIBRARY_GROUP__RATES;
+
+	/**
+	 * The feature id for the '<em><b>Tests</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__TESTS = FUNCTION_LIBRARY_GROUP__TESTS;
+
+	/**
+	 * The feature id for the '<em><b>Guards</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__GUARDS = FUNCTION_LIBRARY_GROUP__GUARDS;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__OPERATIONS = FUNCTION_LIBRARY_GROUP__OPERATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Model</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL = FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Presentation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION = FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Model Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE = FUNCTION_LIBRARY_GROUP_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Convert To Presentation Datatype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE = FUNCTION_LIBRARY_GROUP_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Converter Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP_FEATURE_COUNT = FUNCTION_LIBRARY_GROUP_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Function Library Converter Group</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_CONVERTER_GROUP_OPERATION_COUNT = FUNCTION_LIBRARY_GROUP_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingImpl <em>Function Library Rating</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryRating()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_RATING = 6;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Items</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING__ITEMS = 1;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Rating</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Function Library Rating</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingItemImpl <em>Function Library Rating Item</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingItemImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryRatingItem()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_RATING_ITEM = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING_ITEM__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Rating Item</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING_ITEM_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Function Library Rating Item</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATING_ITEM_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl <em>Function Library Base Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryBaseFunction()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_BASE_FUNCTION = 8;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BASE_FUNCTION__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BASE_FUNCTION__BODY = 2;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Base Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Function Library Base Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryFunctionImpl <em>Function Library Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryFunctionImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryFunction()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_FUNCTION = 9;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_FUNCTION__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_FUNCTION__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_FUNCTION__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The feature id for the '<em><b>Oftype</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_FUNCTION__OFTYPE = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_FUNCTION_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Function Library Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_FUNCTION_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryTestImpl <em>Function Library Test</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryTestImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryTest()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_TEST = 10;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_TEST__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_TEST__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_TEST__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Test</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_TEST_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Library Test</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_TEST_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRateImpl <em>Function Library Rate</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRateImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryRate()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_RATE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATE__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATE__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATE__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The feature id for the '<em><b>Oftype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATE__OFTYPE = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Rate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATE_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Function Library Rate</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_RATE_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGuardImpl <em>Function Library Guard</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGuardImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryGuard()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_GUARD = 12;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GUARD__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GUARD__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GUARD__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Guard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GUARD_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Library Guard</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_GUARD_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryOperationImpl <em>Function Library Operation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryOperationImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryOperation()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_OPERATION = 13;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_OPERATION__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_OPERATION__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_OPERATION__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Operation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_OPERATION_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Library Operation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_OPERATION_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToModelImpl <em>Function Convert To Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToModelImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionConvertToModel()
+	 * @generated
+	 */
+	int FUNCTION_CONVERT_TO_MODEL = 14;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_MODEL__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_MODEL__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_MODEL__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The number of structural features of the '<em>Function Convert To Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_MODEL_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Convert To Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_MODEL_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToPresentationImpl <em>Function Convert To Presentation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToPresentationImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionConvertToPresentation()
+	 * @generated
+	 */
+	int FUNCTION_CONVERT_TO_PRESENTATION = 15;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_PRESENTATION__NAME = FUNCTION_LIBRARY_BASE_FUNCTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_PRESENTATION__PARAMS = FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_PRESENTATION__BODY = FUNCTION_LIBRARY_BASE_FUNCTION__BODY;
+
+	/**
+	 * The number of structural features of the '<em>Function Convert To Presentation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_PRESENTATION_FEATURE_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Function Convert To Presentation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_CONVERT_TO_PRESENTATION_OPERATION_COUNT = FUNCTION_LIBRARY_BASE_FUNCTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryParameterImpl <em>Function Library Parameter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryParameterImpl
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryParameter()
+	 * @generated
+	 */
+	int FUNCTION_LIBRARY_PARAMETER = 16;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PARAMETER__NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Function Library Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PARAMETER_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Function Library Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FUNCTION_LIBRARY_PARAMETER_OPERATION_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel <em>Function Library Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Model</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel
+	 * @generated
+	 */
+	EClass getFunctionLibraryModel();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel#getPckg <em>Pckg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Pckg</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel#getPckg()
+	 * @see #getFunctionLibraryModel()
+	 * @generated
+	 */
+	EReference getFunctionLibraryModel_Pckg();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage <em>Function Library Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Package</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage
+	 * @generated
+	 */
+	EClass getFunctionLibraryPackage();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getImportSection <em>Import Section</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Import Section</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getImportSection()
+	 * @see #getFunctionLibraryPackage()
+	 * @generated
+	 */
+	EReference getFunctionLibraryPackage_ImportSection();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getRatings <em>Ratings</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Ratings</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getRatings()
+	 * @see #getFunctionLibraryPackage()
+	 * @generated
+	 */
+	EReference getFunctionLibraryPackage_Ratings();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getGroups <em>Groups</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Groups</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getGroups()
+	 * @see #getFunctionLibraryPackage()
+	 * @generated
+	 */
+	EReference getFunctionLibraryPackage_Groups();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getConverters <em>Converters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Converters</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getConverters()
+	 * @see #getFunctionLibraryPackage()
+	 * @generated
+	 */
+	EReference getFunctionLibraryPackage_Converters();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup <em>Function Library Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Group</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup
+	 * @generated
+	 */
+	EClass getFunctionLibraryGroup();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getName()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EAttribute getFunctionLibraryGroup_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getFunctions <em>Functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Functions</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getFunctions()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_Functions();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getRates <em>Rates</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Rates</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getRates()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_Rates();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getTests <em>Tests</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Tests</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getTests()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_Tests();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getGuards <em>Guards</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Guards</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getGuards()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_Guards();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getOperations <em>Operations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Operations</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getOperations()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_Operations();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToModel <em>Convert To Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Convert To Model</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToModel()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_ConvertToModel();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToPresentation <em>Convert To Presentation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Convert To Presentation</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToPresentation()
+	 * @see #getFunctionLibraryGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryGroup_ConvertToPresentation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup <em>Function Library Blip Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Blip Group</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup
+	 * @generated
+	 */
+	EClass getFunctionLibraryBlipGroup();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup <em>Function Library Statemachine Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Statemachine Group</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup
+	 * @generated
+	 */
+	EClass getFunctionLibraryStatemachineGroup();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup <em>Function Library Converter Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Converter Group</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup
+	 * @generated
+	 */
+	EClass getFunctionLibraryConverterGroup();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToModelDatatype <em>Convert To Model Datatype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Convert To Model Datatype</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToModelDatatype()
+	 * @see #getFunctionLibraryConverterGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryConverterGroup_ConvertToModelDatatype();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToPresentationDatatype <em>Convert To Presentation Datatype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Convert To Presentation Datatype</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup#getConvertToPresentationDatatype()
+	 * @see #getFunctionLibraryConverterGroup()
+	 * @generated
+	 */
+	EReference getFunctionLibraryConverterGroup_ConvertToPresentationDatatype();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating <em>Function Library Rating</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Rating</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating
+	 * @generated
+	 */
+	EClass getFunctionLibraryRating();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getName()
+	 * @see #getFunctionLibraryRating()
+	 * @generated
+	 */
+	EAttribute getFunctionLibraryRating_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getItems <em>Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Items</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getItems()
+	 * @see #getFunctionLibraryRating()
+	 * @generated
+	 */
+	EReference getFunctionLibraryRating_Items();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem <em>Function Library Rating Item</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Rating Item</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem
+	 * @generated
+	 */
+	EClass getFunctionLibraryRatingItem();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem#getName()
+	 * @see #getFunctionLibraryRatingItem()
+	 * @generated
+	 */
+	EAttribute getFunctionLibraryRatingItem_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction <em>Function Library Base Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Base Function</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction
+	 * @generated
+	 */
+	EClass getFunctionLibraryBaseFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getName()
+	 * @see #getFunctionLibraryBaseFunction()
+	 * @generated
+	 */
+	EAttribute getFunctionLibraryBaseFunction_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getParams <em>Params</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Params</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getParams()
+	 * @see #getFunctionLibraryBaseFunction()
+	 * @generated
+	 */
+	EReference getFunctionLibraryBaseFunction_Params();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getBody <em>Body</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Body</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction#getBody()
+	 * @see #getFunctionLibraryBaseFunction()
+	 * @generated
+	 */
+	EReference getFunctionLibraryBaseFunction_Body();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction <em>Function Library Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Function</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction
+	 * @generated
+	 */
+	EClass getFunctionLibraryFunction();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction#getOftype <em>Oftype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Oftype</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction#getOftype()
+	 * @see #getFunctionLibraryFunction()
+	 * @generated
+	 */
+	EReference getFunctionLibraryFunction_Oftype();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest <em>Function Library Test</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Test</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest
+	 * @generated
+	 */
+	EClass getFunctionLibraryTest();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate <em>Function Library Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Rate</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate
+	 * @generated
+	 */
+	EClass getFunctionLibraryRate();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate#getOftype <em>Oftype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Oftype</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate#getOftype()
+	 * @see #getFunctionLibraryRate()
+	 * @generated
+	 */
+	EReference getFunctionLibraryRate_Oftype();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard <em>Function Library Guard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Guard</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard
+	 * @generated
+	 */
+	EClass getFunctionLibraryGuard();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation <em>Function Library Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Operation</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation
+	 * @generated
+	 */
+	EClass getFunctionLibraryOperation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel <em>Function Convert To Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Convert To Model</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel
+	 * @generated
+	 */
+	EClass getFunctionConvertToModel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation <em>Function Convert To Presentation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Convert To Presentation</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation
+	 * @generated
+	 */
+	EClass getFunctionConvertToPresentation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter <em>Function Library Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Function Library Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter
+	 * @generated
+	 */
+	EClass getFunctionLibraryParameter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getName()
+	 * @see #getFunctionLibraryParameter()
+	 * @generated
+	 */
+	EAttribute getFunctionLibraryParameter_Name();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getParameterType <em>Parameter Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Parameter Type</em>'.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getParameterType()
+	 * @see #getFunctionLibraryParameter()
+	 * @generated
+	 */
+	EReference getFunctionLibraryParameter_ParameterType();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	FunctionLibraryDSLFactory getFunctionLibraryDSLFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryModelImpl <em>Function Library Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryModelImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryModel()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_MODEL = eINSTANCE.getFunctionLibraryModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Pckg</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_MODEL__PCKG = eINSTANCE.getFunctionLibraryModel_Pckg();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl <em>Function Library Package</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryPackage()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_PACKAGE = eINSTANCE.getFunctionLibraryPackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Import Section</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION = eINSTANCE.getFunctionLibraryPackage_ImportSection();
+
+		/**
+		 * The meta object literal for the '<em><b>Ratings</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_PACKAGE__RATINGS = eINSTANCE.getFunctionLibraryPackage_Ratings();
+
+		/**
+		 * The meta object literal for the '<em><b>Groups</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_PACKAGE__GROUPS = eINSTANCE.getFunctionLibraryPackage_Groups();
+
+		/**
+		 * The meta object literal for the '<em><b>Converters</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_PACKAGE__CONVERTERS = eINSTANCE.getFunctionLibraryPackage_Converters();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl <em>Function Library Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryGroup()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_GROUP = eINSTANCE.getFunctionLibraryGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUNCTION_LIBRARY_GROUP__NAME = eINSTANCE.getFunctionLibraryGroup_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Functions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__FUNCTIONS = eINSTANCE.getFunctionLibraryGroup_Functions();
+
+		/**
+		 * The meta object literal for the '<em><b>Rates</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__RATES = eINSTANCE.getFunctionLibraryGroup_Rates();
+
+		/**
+		 * The meta object literal for the '<em><b>Tests</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__TESTS = eINSTANCE.getFunctionLibraryGroup_Tests();
+
+		/**
+		 * The meta object literal for the '<em><b>Guards</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__GUARDS = eINSTANCE.getFunctionLibraryGroup_Guards();
+
+		/**
+		 * The meta object literal for the '<em><b>Operations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__OPERATIONS = eINSTANCE.getFunctionLibraryGroup_Operations();
+
+		/**
+		 * The meta object literal for the '<em><b>Convert To Model</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL = eINSTANCE.getFunctionLibraryGroup_ConvertToModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Convert To Presentation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION = eINSTANCE.getFunctionLibraryGroup_ConvertToPresentation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBlipGroupImpl <em>Function Library Blip Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBlipGroupImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryBlipGroup()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_BLIP_GROUP = eINSTANCE.getFunctionLibraryBlipGroup();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryStatemachineGroupImpl <em>Function Library Statemachine Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryStatemachineGroupImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryStatemachineGroup()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_STATEMACHINE_GROUP = eINSTANCE.getFunctionLibraryStatemachineGroup();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryConverterGroupImpl <em>Function Library Converter Group</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryConverterGroupImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryConverterGroup()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_CONVERTER_GROUP = eINSTANCE.getFunctionLibraryConverterGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Convert To Model Datatype</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE = eINSTANCE.getFunctionLibraryConverterGroup_ConvertToModelDatatype();
+
+		/**
+		 * The meta object literal for the '<em><b>Convert To Presentation Datatype</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE = eINSTANCE.getFunctionLibraryConverterGroup_ConvertToPresentationDatatype();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingImpl <em>Function Library Rating</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryRating()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_RATING = eINSTANCE.getFunctionLibraryRating();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUNCTION_LIBRARY_RATING__NAME = eINSTANCE.getFunctionLibraryRating_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Items</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_RATING__ITEMS = eINSTANCE.getFunctionLibraryRating_Items();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingItemImpl <em>Function Library Rating Item</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingItemImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryRatingItem()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_RATING_ITEM = eINSTANCE.getFunctionLibraryRatingItem();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUNCTION_LIBRARY_RATING_ITEM__NAME = eINSTANCE.getFunctionLibraryRatingItem_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl <em>Function Library Base Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryBaseFunction()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_BASE_FUNCTION = eINSTANCE.getFunctionLibraryBaseFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUNCTION_LIBRARY_BASE_FUNCTION__NAME = eINSTANCE.getFunctionLibraryBaseFunction_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Params</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS = eINSTANCE.getFunctionLibraryBaseFunction_Params();
+
+		/**
+		 * The meta object literal for the '<em><b>Body</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_BASE_FUNCTION__BODY = eINSTANCE.getFunctionLibraryBaseFunction_Body();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryFunctionImpl <em>Function Library Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryFunctionImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryFunction()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_FUNCTION = eINSTANCE.getFunctionLibraryFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Oftype</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_FUNCTION__OFTYPE = eINSTANCE.getFunctionLibraryFunction_Oftype();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryTestImpl <em>Function Library Test</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryTestImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryTest()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_TEST = eINSTANCE.getFunctionLibraryTest();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRateImpl <em>Function Library Rate</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRateImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryRate()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_RATE = eINSTANCE.getFunctionLibraryRate();
+
+		/**
+		 * The meta object literal for the '<em><b>Oftype</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_RATE__OFTYPE = eINSTANCE.getFunctionLibraryRate_Oftype();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGuardImpl <em>Function Library Guard</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGuardImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryGuard()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_GUARD = eINSTANCE.getFunctionLibraryGuard();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryOperationImpl <em>Function Library Operation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryOperationImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryOperation()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_OPERATION = eINSTANCE.getFunctionLibraryOperation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToModelImpl <em>Function Convert To Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToModelImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionConvertToModel()
+		 * @generated
+		 */
+		EClass FUNCTION_CONVERT_TO_MODEL = eINSTANCE.getFunctionConvertToModel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToPresentationImpl <em>Function Convert To Presentation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionConvertToPresentationImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionConvertToPresentation()
+		 * @generated
+		 */
+		EClass FUNCTION_CONVERT_TO_PRESENTATION = eINSTANCE.getFunctionConvertToPresentation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryParameterImpl <em>Function Library Parameter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryParameterImpl
+		 * @see org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryDSLPackageImpl#getFunctionLibraryParameter()
+		 * @generated
+		 */
+		EClass FUNCTION_LIBRARY_PARAMETER = eINSTANCE.getFunctionLibraryParameter();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FUNCTION_LIBRARY_PARAMETER__NAME = eINSTANCE.getFunctionLibraryParameter_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE = eINSTANCE.getFunctionLibraryParameter_ParameterType();
+
+	}
+
+} //FunctionLibraryDSLPackage
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryFunction.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryFunction.java
new file mode 100644
index 0000000..8ad6a0d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryFunction.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction#getOftype <em>Oftype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryFunction()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryFunction extends FunctionLibraryBaseFunction {
+	/**
+	 * Returns the value of the '<em><b>Oftype</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Oftype</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Oftype</em>' containment reference.
+	 * @see #setOftype(JvmParameterizedTypeReference)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryFunction_Oftype()
+	 * @model containment="true"
+	 * @generated
+	 */
+	JvmParameterizedTypeReference getOftype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction#getOftype <em>Oftype</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Oftype</em>' containment reference.
+	 * @see #getOftype()
+	 * @generated
+	 */
+	void setOftype(JvmParameterizedTypeReference value);
+
+} // FunctionLibraryFunction
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryGroup.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryGroup.java
new file mode 100644
index 0000000..18dd56f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryGroup.java
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getFunctions <em>Functions</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getRates <em>Rates</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getTests <em>Tests</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getGuards <em>Guards</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getOperations <em>Operations</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToModel <em>Convert To Model</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToPresentation <em>Convert To Presentation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryGroup extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Functions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Functions</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Functions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_Functions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryFunction> getFunctions();
+
+	/**
+	 * Returns the value of the '<em><b>Rates</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rates</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rates</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_Rates()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryRate> getRates();
+
+	/**
+	 * Returns the value of the '<em><b>Tests</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Tests</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tests</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_Tests()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryTest> getTests();
+
+	/**
+	 * Returns the value of the '<em><b>Guards</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Guards</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Guards</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_Guards()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryGuard> getGuards();
+
+	/**
+	 * Returns the value of the '<em><b>Operations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operations</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Operations</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_Operations()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryOperation> getOperations();
+
+	/**
+	 * Returns the value of the '<em><b>Convert To Model</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Convert To Model</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Convert To Model</em>' containment reference.
+	 * @see #setConvertToModel(FunctionConvertToModel)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_ConvertToModel()
+	 * @model containment="true"
+	 * @generated
+	 */
+	FunctionConvertToModel getConvertToModel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToModel <em>Convert To Model</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Convert To Model</em>' containment reference.
+	 * @see #getConvertToModel()
+	 * @generated
+	 */
+	void setConvertToModel(FunctionConvertToModel value);
+
+	/**
+	 * Returns the value of the '<em><b>Convert To Presentation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Convert To Presentation</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Convert To Presentation</em>' containment reference.
+	 * @see #setConvertToPresentation(FunctionConvertToPresentation)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGroup_ConvertToPresentation()
+	 * @model containment="true"
+	 * @generated
+	 */
+	FunctionConvertToPresentation getConvertToPresentation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup#getConvertToPresentation <em>Convert To Presentation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Convert To Presentation</em>' containment reference.
+	 * @see #getConvertToPresentation()
+	 * @generated
+	 */
+	void setConvertToPresentation(FunctionConvertToPresentation value);
+
+} // FunctionLibraryGroup
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryGuard.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryGuard.java
new file mode 100644
index 0000000..06a4774
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryGuard.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Guard</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryGuard()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryGuard extends FunctionLibraryBaseFunction {
+} // FunctionLibraryGuard
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryModel.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryModel.java
new file mode 100644
index 0000000..da49b45
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryModel.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel#getPckg <em>Pckg</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryModel()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryModel extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Pckg</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pckg</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pckg</em>' containment reference.
+	 * @see #setPckg(FunctionLibraryPackage)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryModel_Pckg()
+	 * @model containment="true"
+	 * @generated
+	 */
+	FunctionLibraryPackage getPckg();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel#getPckg <em>Pckg</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pckg</em>' containment reference.
+	 * @see #getPckg()
+	 * @generated
+	 */
+	void setPckg(FunctionLibraryPackage value);
+
+} // FunctionLibraryModel
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryOperation.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryOperation.java
new file mode 100644
index 0000000..955e61a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryOperation.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryOperation()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryOperation extends FunctionLibraryBaseFunction {
+} // FunctionLibraryOperation
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryPackage.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryPackage.java
new file mode 100644
index 0000000..31ab887
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryPackage.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+import org.eclipse.xtext.xtype.XImportSection;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getImportSection <em>Import Section</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getRatings <em>Ratings</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getGroups <em>Groups</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getConverters <em>Converters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryPackage()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryPackage extends LPackage {
+	/**
+	 * Returns the value of the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Import Section</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Import Section</em>' containment reference.
+	 * @see #setImportSection(XImportSection)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryPackage_ImportSection()
+	 * @model containment="true"
+	 * @generated
+	 */
+	XImportSection getImportSection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage#getImportSection <em>Import Section</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Import Section</em>' containment reference.
+	 * @see #getImportSection()
+	 * @generated
+	 */
+	void setImportSection(XImportSection value);
+
+	/**
+	 * Returns the value of the '<em><b>Ratings</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ratings</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ratings</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryPackage_Ratings()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryRating> getRatings();
+
+	/**
+	 * Returns the value of the '<em><b>Groups</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Groups</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Groups</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryPackage_Groups()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryGroup> getGroups();
+
+	/**
+	 * Returns the value of the '<em><b>Converters</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Converters</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Converters</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryPackage_Converters()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryConverterGroup> getConverters();
+
+} // FunctionLibraryPackage
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryParameter.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryParameter.java
new file mode 100644
index 0000000..8ed108e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryParameter.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getParameterType <em>Parameter Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryParameter()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryParameter extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryParameter_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parameter Type</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parameter Type</em>' containment reference.
+	 * @see #setParameterType(JvmTypeReference)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryParameter_ParameterType()
+	 * @model containment="true"
+	 * @generated
+	 */
+	JvmTypeReference getParameterType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter#getParameterType <em>Parameter Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter Type</em>' containment reference.
+	 * @see #getParameterType()
+	 * @generated
+	 */
+	void setParameterType(JvmTypeReference value);
+
+} // FunctionLibraryParameter
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRate.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRate.java
new file mode 100644
index 0000000..7a011e1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRate.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Rate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate#getOftype <em>Oftype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRate()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryRate extends FunctionLibraryBaseFunction {
+	/**
+	 * Returns the value of the '<em><b>Oftype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Oftype</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Oftype</em>' reference.
+	 * @see #setOftype(FunctionLibraryRating)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRate_Oftype()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryRating getOftype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate#getOftype <em>Oftype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Oftype</em>' reference.
+	 * @see #getOftype()
+	 * @generated
+	 */
+	void setOftype(FunctionLibraryRating value);
+
+} // FunctionLibraryRate
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRating.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRating.java
new file mode 100644
index 0000000..13e63bd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRating.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Rating</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRating()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryRating extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRating_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Items</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRating_Items()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<FunctionLibraryRatingItem> getItems();
+
+} // FunctionLibraryRating
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRatingItem.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRatingItem.java
new file mode 100644
index 0000000..7c277be
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryRatingItem.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Rating Item</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRatingItem()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryRatingItem extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryRatingItem_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // FunctionLibraryRatingItem
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryStatemachineGroup.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryStatemachineGroup.java
new file mode 100644
index 0000000..b16a95d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryStatemachineGroup.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Statemachine Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryStatemachineGroup()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryStatemachineGroup extends FunctionLibraryGroup {
+} // FunctionLibraryStatemachineGroup
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryTest.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryTest.java
new file mode 100644
index 0000000..dcfe2e5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryTest.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Library Test</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#getFunctionLibraryTest()
+ * @model
+ * @generated
+ */
+public interface FunctionLibraryTest extends FunctionLibraryBaseFunction {
+} // FunctionLibraryTest
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionConvertToModelImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionConvertToModelImpl.java
new file mode 100644
index 0000000..2d3401f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionConvertToModelImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Convert To Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionConvertToModelImpl extends FunctionLibraryBaseFunctionImpl implements FunctionConvertToModel {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionConvertToModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_CONVERT_TO_MODEL;
+	}
+
+} //FunctionConvertToModelImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionConvertToPresentationImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionConvertToPresentationImpl.java
new file mode 100644
index 0000000..2d61102
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionConvertToPresentationImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Convert To Presentation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionConvertToPresentationImpl extends FunctionLibraryBaseFunctionImpl implements FunctionConvertToPresentation {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionConvertToPresentationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_CONVERT_TO_PRESENTATION;
+	}
+
+} //FunctionConvertToPresentationImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryBaseFunctionImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryBaseFunctionImpl.java
new file mode 100644
index 0000000..affdb39
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryBaseFunctionImpl.java
@@ -0,0 +1,301 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Base Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl#getParams <em>Params</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryBaseFunctionImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryBaseFunctionImpl extends MinimalEObjectImpl.Container implements FunctionLibraryBaseFunction {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParams() <em>Params</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParams()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryParameter> params;
+
+	/**
+	 * The cached value of the '{@link #getBody() <em>Body</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBody()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression body;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryBaseFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_BASE_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryParameter> getParams() {
+		if (params == null) {
+			params = new EObjectContainmentEList<FunctionLibraryParameter>(FunctionLibraryParameter.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS);
+		}
+		return params;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getBody() {
+		return body;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetBody(XExpression newBody, NotificationChain msgs) {
+		XExpression oldBody = body;
+		body = newBody;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY, oldBody, newBody);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBody(XExpression newBody) {
+		if (newBody != body) {
+			NotificationChain msgs = null;
+			if (body != null)
+				msgs = ((InternalEObject)body).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY, null, msgs);
+			if (newBody != null)
+				msgs = ((InternalEObject)newBody).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY, null, msgs);
+			msgs = basicSetBody(newBody, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY, newBody, newBody));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS:
+				return ((InternalEList<?>)getParams()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY:
+				return basicSetBody(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__NAME:
+				return getName();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS:
+				return getParams();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY:
+				return getBody();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__NAME:
+				setName((String)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS:
+				getParams().clear();
+				getParams().addAll((Collection<? extends FunctionLibraryParameter>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY:
+				setBody((XExpression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS:
+				getParams().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY:
+				setBody((XExpression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS:
+				return params != null && !params.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION__BODY:
+				return body != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FunctionLibraryBaseFunctionImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryBlipGroupImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryBlipGroupImpl.java
new file mode 100644
index 0000000..8396718
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryBlipGroupImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Blip Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryBlipGroupImpl extends FunctionLibraryGroupImpl implements FunctionLibraryBlipGroup {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryBlipGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_BLIP_GROUP;
+	}
+
+} //FunctionLibraryBlipGroupImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryConverterGroupImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryConverterGroupImpl.java
new file mode 100644
index 0000000..851837d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryConverterGroupImpl.java
@@ -0,0 +1,228 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Converter Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryConverterGroupImpl#getConvertToModelDatatype <em>Convert To Model Datatype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryConverterGroupImpl#getConvertToPresentationDatatype <em>Convert To Presentation Datatype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryConverterGroupImpl extends FunctionLibraryGroupImpl implements FunctionLibraryConverterGroup {
+	/**
+	 * The cached value of the '{@link #getConvertToModelDatatype() <em>Convert To Model Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConvertToModelDatatype()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDataType convertToModelDatatype;
+
+	/**
+	 * The cached value of the '{@link #getConvertToPresentationDatatype() <em>Convert To Presentation Datatype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConvertToPresentationDatatype()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDataType convertToPresentationDatatype;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryConverterGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_CONVERTER_GROUP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDataType getConvertToModelDatatype() {
+		if (convertToModelDatatype != null && convertToModelDatatype.eIsProxy()) {
+			InternalEObject oldConvertToModelDatatype = (InternalEObject)convertToModelDatatype;
+			convertToModelDatatype = (LDataType)eResolveProxy(oldConvertToModelDatatype);
+			if (convertToModelDatatype != oldConvertToModelDatatype) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE, oldConvertToModelDatatype, convertToModelDatatype));
+			}
+		}
+		return convertToModelDatatype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDataType basicGetConvertToModelDatatype() {
+		return convertToModelDatatype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConvertToModelDatatype(LDataType newConvertToModelDatatype) {
+		LDataType oldConvertToModelDatatype = convertToModelDatatype;
+		convertToModelDatatype = newConvertToModelDatatype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE, oldConvertToModelDatatype, convertToModelDatatype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDataType getConvertToPresentationDatatype() {
+		if (convertToPresentationDatatype != null && convertToPresentationDatatype.eIsProxy()) {
+			InternalEObject oldConvertToPresentationDatatype = (InternalEObject)convertToPresentationDatatype;
+			convertToPresentationDatatype = (LDataType)eResolveProxy(oldConvertToPresentationDatatype);
+			if (convertToPresentationDatatype != oldConvertToPresentationDatatype) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE, oldConvertToPresentationDatatype, convertToPresentationDatatype));
+			}
+		}
+		return convertToPresentationDatatype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDataType basicGetConvertToPresentationDatatype() {
+		return convertToPresentationDatatype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConvertToPresentationDatatype(LDataType newConvertToPresentationDatatype) {
+		LDataType oldConvertToPresentationDatatype = convertToPresentationDatatype;
+		convertToPresentationDatatype = newConvertToPresentationDatatype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE, oldConvertToPresentationDatatype, convertToPresentationDatatype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE:
+				if (resolve) return getConvertToModelDatatype();
+				return basicGetConvertToModelDatatype();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE:
+				if (resolve) return getConvertToPresentationDatatype();
+				return basicGetConvertToPresentationDatatype();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE:
+				setConvertToModelDatatype((LDataType)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE:
+				setConvertToPresentationDatatype((LDataType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE:
+				setConvertToModelDatatype((LDataType)null);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE:
+				setConvertToPresentationDatatype((LDataType)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE:
+				return convertToModelDatatype != null;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE:
+				return convertToPresentationDatatype != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FunctionLibraryConverterGroupImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryDSLFactoryImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryDSLFactoryImpl.java
new file mode 100644
index 0000000..ca882c4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryDSLFactoryImpl.java
@@ -0,0 +1,282 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionLibraryDSLFactoryImpl extends EFactoryImpl implements FunctionLibraryDSLFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FunctionLibraryDSLFactory init() {
+		try {
+			FunctionLibraryDSLFactory theFunctionLibraryDSLFactory = (FunctionLibraryDSLFactory)EPackage.Registry.INSTANCE.getEFactory(FunctionLibraryDSLPackage.eNS_URI);
+			if (theFunctionLibraryDSLFactory != null) {
+				return theFunctionLibraryDSLFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new FunctionLibraryDSLFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryDSLFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL: return createFunctionLibraryModel();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE: return createFunctionLibraryPackage();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP: return createFunctionLibraryGroup();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BLIP_GROUP: return createFunctionLibraryBlipGroup();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_STATEMACHINE_GROUP: return createFunctionLibraryStatemachineGroup();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP: return createFunctionLibraryConverterGroup();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING: return createFunctionLibraryRating();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM: return createFunctionLibraryRatingItem();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION: return createFunctionLibraryBaseFunction();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION: return createFunctionLibraryFunction();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_TEST: return createFunctionLibraryTest();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE: return createFunctionLibraryRate();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GUARD: return createFunctionLibraryGuard();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_OPERATION: return createFunctionLibraryOperation();
+			case FunctionLibraryDSLPackage.FUNCTION_CONVERT_TO_MODEL: return createFunctionConvertToModel();
+			case FunctionLibraryDSLPackage.FUNCTION_CONVERT_TO_PRESENTATION: return createFunctionConvertToPresentation();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER: return createFunctionLibraryParameter();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryModel createFunctionLibraryModel() {
+		FunctionLibraryModelImpl functionLibraryModel = new FunctionLibraryModelImpl();
+		return functionLibraryModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryPackage createFunctionLibraryPackage() {
+		FunctionLibraryPackageImpl functionLibraryPackage = new FunctionLibraryPackageImpl();
+		return functionLibraryPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryGroup createFunctionLibraryGroup() {
+		FunctionLibraryGroupImpl functionLibraryGroup = new FunctionLibraryGroupImpl();
+		return functionLibraryGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryBlipGroup createFunctionLibraryBlipGroup() {
+		FunctionLibraryBlipGroupImpl functionLibraryBlipGroup = new FunctionLibraryBlipGroupImpl();
+		return functionLibraryBlipGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryStatemachineGroup createFunctionLibraryStatemachineGroup() {
+		FunctionLibraryStatemachineGroupImpl functionLibraryStatemachineGroup = new FunctionLibraryStatemachineGroupImpl();
+		return functionLibraryStatemachineGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryConverterGroup createFunctionLibraryConverterGroup() {
+		FunctionLibraryConverterGroupImpl functionLibraryConverterGroup = new FunctionLibraryConverterGroupImpl();
+		return functionLibraryConverterGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryRating createFunctionLibraryRating() {
+		FunctionLibraryRatingImpl functionLibraryRating = new FunctionLibraryRatingImpl();
+		return functionLibraryRating;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryRatingItem createFunctionLibraryRatingItem() {
+		FunctionLibraryRatingItemImpl functionLibraryRatingItem = new FunctionLibraryRatingItemImpl();
+		return functionLibraryRatingItem;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryBaseFunction createFunctionLibraryBaseFunction() {
+		FunctionLibraryBaseFunctionImpl functionLibraryBaseFunction = new FunctionLibraryBaseFunctionImpl();
+		return functionLibraryBaseFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryFunction createFunctionLibraryFunction() {
+		FunctionLibraryFunctionImpl functionLibraryFunction = new FunctionLibraryFunctionImpl();
+		return functionLibraryFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryTest createFunctionLibraryTest() {
+		FunctionLibraryTestImpl functionLibraryTest = new FunctionLibraryTestImpl();
+		return functionLibraryTest;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryRate createFunctionLibraryRate() {
+		FunctionLibraryRateImpl functionLibraryRate = new FunctionLibraryRateImpl();
+		return functionLibraryRate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryGuard createFunctionLibraryGuard() {
+		FunctionLibraryGuardImpl functionLibraryGuard = new FunctionLibraryGuardImpl();
+		return functionLibraryGuard;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryOperation createFunctionLibraryOperation() {
+		FunctionLibraryOperationImpl functionLibraryOperation = new FunctionLibraryOperationImpl();
+		return functionLibraryOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionConvertToModel createFunctionConvertToModel() {
+		FunctionConvertToModelImpl functionConvertToModel = new FunctionConvertToModelImpl();
+		return functionConvertToModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionConvertToPresentation createFunctionConvertToPresentation() {
+		FunctionConvertToPresentationImpl functionConvertToPresentation = new FunctionConvertToPresentationImpl();
+		return functionConvertToPresentation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryParameter createFunctionLibraryParameter() {
+		FunctionLibraryParameterImpl functionLibraryParameter = new FunctionLibraryParameterImpl();
+		return functionLibraryParameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryDSLPackage getFunctionLibraryDSLPackage() {
+		return (FunctionLibraryDSLPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static FunctionLibraryDSLPackage getPackage() {
+		return FunctionLibraryDSLPackage.eINSTANCE;
+	}
+
+} //FunctionLibraryDSLFactoryImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryDSLPackageImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryDSLPackageImpl.java
new file mode 100644
index 0000000..a4c4e59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryDSLPackageImpl.java
@@ -0,0 +1,840 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLFactory;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest;
+
+import org.eclipse.xtext.common.types.TypesPackage;
+
+import org.eclipse.xtext.xbase.XbasePackage;
+
+import org.eclipse.xtext.xtype.XtypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionLibraryDSLPackageImpl extends EPackageImpl implements FunctionLibraryDSLPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryPackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryGroupEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryBlipGroupEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryStatemachineGroupEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryConverterGroupEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryRatingEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryRatingItemEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryBaseFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryTestEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryRateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryGuardEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryOperationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionConvertToModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionConvertToPresentationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass functionLibraryParameterEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private FunctionLibraryDSLPackageImpl() {
+		super(eNS_URI, FunctionLibraryDSLFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link FunctionLibraryDSLPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static FunctionLibraryDSLPackage init() {
+		if (isInited) return (FunctionLibraryDSLPackage)EPackage.Registry.INSTANCE.getEPackage(FunctionLibraryDSLPackage.eNS_URI);
+
+		// Obtain or create and register package
+		FunctionLibraryDSLPackageImpl theFunctionLibraryDSLPackage = (FunctionLibraryDSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FunctionLibraryDSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FunctionLibraryDSLPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		OSBPTypesPackage.eINSTANCE.eClass();
+		XtypePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theFunctionLibraryDSLPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theFunctionLibraryDSLPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theFunctionLibraryDSLPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(FunctionLibraryDSLPackage.eNS_URI, theFunctionLibraryDSLPackage);
+		return theFunctionLibraryDSLPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryModel() {
+		return functionLibraryModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryModel_Pckg() {
+		return (EReference)functionLibraryModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryPackage() {
+		return functionLibraryPackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryPackage_ImportSection() {
+		return (EReference)functionLibraryPackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryPackage_Ratings() {
+		return (EReference)functionLibraryPackageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryPackage_Groups() {
+		return (EReference)functionLibraryPackageEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryPackage_Converters() {
+		return (EReference)functionLibraryPackageEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryGroup() {
+		return functionLibraryGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFunctionLibraryGroup_Name() {
+		return (EAttribute)functionLibraryGroupEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_Functions() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_Rates() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_Tests() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_Guards() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_Operations() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_ConvertToModel() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryGroup_ConvertToPresentation() {
+		return (EReference)functionLibraryGroupEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryBlipGroup() {
+		return functionLibraryBlipGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryStatemachineGroup() {
+		return functionLibraryStatemachineGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryConverterGroup() {
+		return functionLibraryConverterGroupEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryConverterGroup_ConvertToModelDatatype() {
+		return (EReference)functionLibraryConverterGroupEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryConverterGroup_ConvertToPresentationDatatype() {
+		return (EReference)functionLibraryConverterGroupEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryRating() {
+		return functionLibraryRatingEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFunctionLibraryRating_Name() {
+		return (EAttribute)functionLibraryRatingEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryRating_Items() {
+		return (EReference)functionLibraryRatingEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryRatingItem() {
+		return functionLibraryRatingItemEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFunctionLibraryRatingItem_Name() {
+		return (EAttribute)functionLibraryRatingItemEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryBaseFunction() {
+		return functionLibraryBaseFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFunctionLibraryBaseFunction_Name() {
+		return (EAttribute)functionLibraryBaseFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryBaseFunction_Params() {
+		return (EReference)functionLibraryBaseFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryBaseFunction_Body() {
+		return (EReference)functionLibraryBaseFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryFunction() {
+		return functionLibraryFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryFunction_Oftype() {
+		return (EReference)functionLibraryFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryTest() {
+		return functionLibraryTestEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryRate() {
+		return functionLibraryRateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryRate_Oftype() {
+		return (EReference)functionLibraryRateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryGuard() {
+		return functionLibraryGuardEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryOperation() {
+		return functionLibraryOperationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionConvertToModel() {
+		return functionConvertToModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionConvertToPresentation() {
+		return functionConvertToPresentationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFunctionLibraryParameter() {
+		return functionLibraryParameterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFunctionLibraryParameter_Name() {
+		return (EAttribute)functionLibraryParameterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFunctionLibraryParameter_ParameterType() {
+		return (EReference)functionLibraryParameterEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryDSLFactory getFunctionLibraryDSLFactory() {
+		return (FunctionLibraryDSLFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		functionLibraryModelEClass = createEClass(FUNCTION_LIBRARY_MODEL);
+		createEReference(functionLibraryModelEClass, FUNCTION_LIBRARY_MODEL__PCKG);
+
+		functionLibraryPackageEClass = createEClass(FUNCTION_LIBRARY_PACKAGE);
+		createEReference(functionLibraryPackageEClass, FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION);
+		createEReference(functionLibraryPackageEClass, FUNCTION_LIBRARY_PACKAGE__RATINGS);
+		createEReference(functionLibraryPackageEClass, FUNCTION_LIBRARY_PACKAGE__GROUPS);
+		createEReference(functionLibraryPackageEClass, FUNCTION_LIBRARY_PACKAGE__CONVERTERS);
+
+		functionLibraryGroupEClass = createEClass(FUNCTION_LIBRARY_GROUP);
+		createEAttribute(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__NAME);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__FUNCTIONS);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__RATES);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__TESTS);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__GUARDS);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__OPERATIONS);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL);
+		createEReference(functionLibraryGroupEClass, FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION);
+
+		functionLibraryBlipGroupEClass = createEClass(FUNCTION_LIBRARY_BLIP_GROUP);
+
+		functionLibraryStatemachineGroupEClass = createEClass(FUNCTION_LIBRARY_STATEMACHINE_GROUP);
+
+		functionLibraryConverterGroupEClass = createEClass(FUNCTION_LIBRARY_CONVERTER_GROUP);
+		createEReference(functionLibraryConverterGroupEClass, FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_MODEL_DATATYPE);
+		createEReference(functionLibraryConverterGroupEClass, FUNCTION_LIBRARY_CONVERTER_GROUP__CONVERT_TO_PRESENTATION_DATATYPE);
+
+		functionLibraryRatingEClass = createEClass(FUNCTION_LIBRARY_RATING);
+		createEAttribute(functionLibraryRatingEClass, FUNCTION_LIBRARY_RATING__NAME);
+		createEReference(functionLibraryRatingEClass, FUNCTION_LIBRARY_RATING__ITEMS);
+
+		functionLibraryRatingItemEClass = createEClass(FUNCTION_LIBRARY_RATING_ITEM);
+		createEAttribute(functionLibraryRatingItemEClass, FUNCTION_LIBRARY_RATING_ITEM__NAME);
+
+		functionLibraryBaseFunctionEClass = createEClass(FUNCTION_LIBRARY_BASE_FUNCTION);
+		createEAttribute(functionLibraryBaseFunctionEClass, FUNCTION_LIBRARY_BASE_FUNCTION__NAME);
+		createEReference(functionLibraryBaseFunctionEClass, FUNCTION_LIBRARY_BASE_FUNCTION__PARAMS);
+		createEReference(functionLibraryBaseFunctionEClass, FUNCTION_LIBRARY_BASE_FUNCTION__BODY);
+
+		functionLibraryFunctionEClass = createEClass(FUNCTION_LIBRARY_FUNCTION);
+		createEReference(functionLibraryFunctionEClass, FUNCTION_LIBRARY_FUNCTION__OFTYPE);
+
+		functionLibraryTestEClass = createEClass(FUNCTION_LIBRARY_TEST);
+
+		functionLibraryRateEClass = createEClass(FUNCTION_LIBRARY_RATE);
+		createEReference(functionLibraryRateEClass, FUNCTION_LIBRARY_RATE__OFTYPE);
+
+		functionLibraryGuardEClass = createEClass(FUNCTION_LIBRARY_GUARD);
+
+		functionLibraryOperationEClass = createEClass(FUNCTION_LIBRARY_OPERATION);
+
+		functionConvertToModelEClass = createEClass(FUNCTION_CONVERT_TO_MODEL);
+
+		functionConvertToPresentationEClass = createEClass(FUNCTION_CONVERT_TO_PRESENTATION);
+
+		functionLibraryParameterEClass = createEClass(FUNCTION_LIBRARY_PARAMETER);
+		createEAttribute(functionLibraryParameterEClass, FUNCTION_LIBRARY_PARAMETER__NAME);
+		createEReference(functionLibraryParameterEClass, FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		XtypePackage theXtypePackage = (XtypePackage)EPackage.Registry.INSTANCE.getEPackage(XtypePackage.eNS_URI);
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+		XbasePackage theXbasePackage = (XbasePackage)EPackage.Registry.INSTANCE.getEPackage(XbasePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		functionLibraryPackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
+		functionLibraryBlipGroupEClass.getESuperTypes().add(this.getFunctionLibraryGroup());
+		functionLibraryStatemachineGroupEClass.getESuperTypes().add(this.getFunctionLibraryGroup());
+		functionLibraryConverterGroupEClass.getESuperTypes().add(this.getFunctionLibraryGroup());
+		functionLibraryFunctionEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+		functionLibraryTestEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+		functionLibraryRateEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+		functionLibraryGuardEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+		functionLibraryOperationEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+		functionConvertToModelEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+		functionConvertToPresentationEClass.getESuperTypes().add(this.getFunctionLibraryBaseFunction());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(functionLibraryModelEClass, FunctionLibraryModel.class, "FunctionLibraryModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFunctionLibraryModel_Pckg(), this.getFunctionLibraryPackage(), null, "pckg", null, 0, 1, FunctionLibraryModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryPackageEClass, FunctionLibraryPackage.class, "FunctionLibraryPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFunctionLibraryPackage_ImportSection(), theXtypePackage.getXImportSection(), null, "importSection", null, 0, 1, FunctionLibraryPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryPackage_Ratings(), this.getFunctionLibraryRating(), null, "ratings", null, 0, -1, FunctionLibraryPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryPackage_Groups(), this.getFunctionLibraryGroup(), null, "groups", null, 0, -1, FunctionLibraryPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryPackage_Converters(), this.getFunctionLibraryConverterGroup(), null, "converters", null, 0, -1, FunctionLibraryPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryGroupEClass, FunctionLibraryGroup.class, "FunctionLibraryGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFunctionLibraryGroup_Name(), theEcorePackage.getEString(), "name", null, 0, 1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_Functions(), this.getFunctionLibraryFunction(), null, "functions", null, 0, -1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_Rates(), this.getFunctionLibraryRate(), null, "rates", null, 0, -1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_Tests(), this.getFunctionLibraryTest(), null, "tests", null, 0, -1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_Guards(), this.getFunctionLibraryGuard(), null, "guards", null, 0, -1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_Operations(), this.getFunctionLibraryOperation(), null, "operations", null, 0, -1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_ConvertToModel(), this.getFunctionConvertToModel(), null, "convertToModel", null, 0, 1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryGroup_ConvertToPresentation(), this.getFunctionConvertToPresentation(), null, "convertToPresentation", null, 0, 1, FunctionLibraryGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryBlipGroupEClass, FunctionLibraryBlipGroup.class, "FunctionLibraryBlipGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionLibraryStatemachineGroupEClass, FunctionLibraryStatemachineGroup.class, "FunctionLibraryStatemachineGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionLibraryConverterGroupEClass, FunctionLibraryConverterGroup.class, "FunctionLibraryConverterGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFunctionLibraryConverterGroup_ConvertToModelDatatype(), theOSBPTypesPackage.getLDataType(), null, "convertToModelDatatype", null, 0, 1, FunctionLibraryConverterGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryConverterGroup_ConvertToPresentationDatatype(), theOSBPTypesPackage.getLDataType(), null, "convertToPresentationDatatype", null, 0, 1, FunctionLibraryConverterGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryRatingEClass, FunctionLibraryRating.class, "FunctionLibraryRating", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFunctionLibraryRating_Name(), theEcorePackage.getEString(), "name", null, 0, 1, FunctionLibraryRating.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryRating_Items(), this.getFunctionLibraryRatingItem(), null, "items", null, 0, -1, FunctionLibraryRating.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryRatingItemEClass, FunctionLibraryRatingItem.class, "FunctionLibraryRatingItem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFunctionLibraryRatingItem_Name(), theEcorePackage.getEString(), "name", null, 0, 1, FunctionLibraryRatingItem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryBaseFunctionEClass, FunctionLibraryBaseFunction.class, "FunctionLibraryBaseFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFunctionLibraryBaseFunction_Name(), theEcorePackage.getEString(), "name", null, 0, 1, FunctionLibraryBaseFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryBaseFunction_Params(), this.getFunctionLibraryParameter(), null, "params", null, 0, -1, FunctionLibraryBaseFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryBaseFunction_Body(), theXbasePackage.getXExpression(), null, "body", null, 0, 1, FunctionLibraryBaseFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryFunctionEClass, FunctionLibraryFunction.class, "FunctionLibraryFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFunctionLibraryFunction_Oftype(), theTypesPackage.getJvmParameterizedTypeReference(), null, "oftype", null, 0, 1, FunctionLibraryFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryTestEClass, FunctionLibraryTest.class, "FunctionLibraryTest", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionLibraryRateEClass, FunctionLibraryRate.class, "FunctionLibraryRate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFunctionLibraryRate_Oftype(), this.getFunctionLibraryRating(), null, "oftype", null, 0, 1, FunctionLibraryRate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(functionLibraryGuardEClass, FunctionLibraryGuard.class, "FunctionLibraryGuard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionLibraryOperationEClass, FunctionLibraryOperation.class, "FunctionLibraryOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionConvertToModelEClass, FunctionConvertToModel.class, "FunctionConvertToModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionConvertToPresentationEClass, FunctionConvertToPresentation.class, "FunctionConvertToPresentation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(functionLibraryParameterEClass, FunctionLibraryParameter.class, "FunctionLibraryParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFunctionLibraryParameter_Name(), theEcorePackage.getEString(), "name", null, 0, 1, FunctionLibraryParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFunctionLibraryParameter_ParameterType(), theTypesPackage.getJvmTypeReference(), null, "parameterType", null, 0, 1, FunctionLibraryParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/emf/2002/Ecore
+		createEcoreAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createEcoreAnnotations() {
+		String source = "http://www.eclipse.org/emf/2002/Ecore";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "rootPackage", "functionLibraryDSL"
+		   });
+	}
+
+} //FunctionLibraryDSLPackageImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryFunctionImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryFunctionImpl.java
new file mode 100644
index 0000000..7c54805
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryFunctionImpl.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryFunctionImpl#getOftype <em>Oftype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryFunctionImpl extends FunctionLibraryBaseFunctionImpl implements FunctionLibraryFunction {
+	/**
+	 * The cached value of the '{@link #getOftype() <em>Oftype</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOftype()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmParameterizedTypeReference oftype;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmParameterizedTypeReference getOftype() {
+		return oftype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOftype(JvmParameterizedTypeReference newOftype, NotificationChain msgs) {
+		JvmParameterizedTypeReference oldOftype = oftype;
+		oftype = newOftype;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE, oldOftype, newOftype);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOftype(JvmParameterizedTypeReference newOftype) {
+		if (newOftype != oftype) {
+			NotificationChain msgs = null;
+			if (oftype != null)
+				msgs = ((InternalEObject)oftype).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE, null, msgs);
+			if (newOftype != null)
+				msgs = ((InternalEObject)newOftype).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE, null, msgs);
+			msgs = basicSetOftype(newOftype, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE, newOftype, newOftype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE:
+				return basicSetOftype(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE:
+				return getOftype();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE:
+				setOftype((JvmParameterizedTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE:
+				setOftype((JvmParameterizedTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION__OFTYPE:
+				return oftype != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FunctionLibraryFunctionImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryGroupImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryGroupImpl.java
new file mode 100644
index 0000000..1a58233
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryGroupImpl.java
@@ -0,0 +1,515 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getFunctions <em>Functions</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getRates <em>Rates</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getTests <em>Tests</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getGuards <em>Guards</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getOperations <em>Operations</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getConvertToModel <em>Convert To Model</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryGroupImpl#getConvertToPresentation <em>Convert To Presentation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryGroupImpl extends MinimalEObjectImpl.Container implements FunctionLibraryGroup {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getFunctions() <em>Functions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunctions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryFunction> functions;
+
+	/**
+	 * The cached value of the '{@link #getRates() <em>Rates</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRates()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryRate> rates;
+
+	/**
+	 * The cached value of the '{@link #getTests() <em>Tests</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTests()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryTest> tests;
+
+	/**
+	 * The cached value of the '{@link #getGuards() <em>Guards</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGuards()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryGuard> guards;
+
+	/**
+	 * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryOperation> operations;
+
+	/**
+	 * The cached value of the '{@link #getConvertToModel() <em>Convert To Model</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConvertToModel()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionConvertToModel convertToModel;
+
+	/**
+	 * The cached value of the '{@link #getConvertToPresentation() <em>Convert To Presentation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConvertToPresentation()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionConvertToPresentation convertToPresentation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_GROUP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryFunction> getFunctions() {
+		if (functions == null) {
+			functions = new EObjectContainmentEList<FunctionLibraryFunction>(FunctionLibraryFunction.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__FUNCTIONS);
+		}
+		return functions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryRate> getRates() {
+		if (rates == null) {
+			rates = new EObjectContainmentEList<FunctionLibraryRate>(FunctionLibraryRate.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__RATES);
+		}
+		return rates;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryTest> getTests() {
+		if (tests == null) {
+			tests = new EObjectContainmentEList<FunctionLibraryTest>(FunctionLibraryTest.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__TESTS);
+		}
+		return tests;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryGuard> getGuards() {
+		if (guards == null) {
+			guards = new EObjectContainmentEList<FunctionLibraryGuard>(FunctionLibraryGuard.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__GUARDS);
+		}
+		return guards;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryOperation> getOperations() {
+		if (operations == null) {
+			operations = new EObjectContainmentEList<FunctionLibraryOperation>(FunctionLibraryOperation.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__OPERATIONS);
+		}
+		return operations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionConvertToModel getConvertToModel() {
+		return convertToModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetConvertToModel(FunctionConvertToModel newConvertToModel, NotificationChain msgs) {
+		FunctionConvertToModel oldConvertToModel = convertToModel;
+		convertToModel = newConvertToModel;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL, oldConvertToModel, newConvertToModel);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConvertToModel(FunctionConvertToModel newConvertToModel) {
+		if (newConvertToModel != convertToModel) {
+			NotificationChain msgs = null;
+			if (convertToModel != null)
+				msgs = ((InternalEObject)convertToModel).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL, null, msgs);
+			if (newConvertToModel != null)
+				msgs = ((InternalEObject)newConvertToModel).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL, null, msgs);
+			msgs = basicSetConvertToModel(newConvertToModel, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL, newConvertToModel, newConvertToModel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionConvertToPresentation getConvertToPresentation() {
+		return convertToPresentation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetConvertToPresentation(FunctionConvertToPresentation newConvertToPresentation, NotificationChain msgs) {
+		FunctionConvertToPresentation oldConvertToPresentation = convertToPresentation;
+		convertToPresentation = newConvertToPresentation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION, oldConvertToPresentation, newConvertToPresentation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConvertToPresentation(FunctionConvertToPresentation newConvertToPresentation) {
+		if (newConvertToPresentation != convertToPresentation) {
+			NotificationChain msgs = null;
+			if (convertToPresentation != null)
+				msgs = ((InternalEObject)convertToPresentation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION, null, msgs);
+			if (newConvertToPresentation != null)
+				msgs = ((InternalEObject)newConvertToPresentation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION, null, msgs);
+			msgs = basicSetConvertToPresentation(newConvertToPresentation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION, newConvertToPresentation, newConvertToPresentation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__FUNCTIONS:
+				return ((InternalEList<?>)getFunctions()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__RATES:
+				return ((InternalEList<?>)getRates()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__TESTS:
+				return ((InternalEList<?>)getTests()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__GUARDS:
+				return ((InternalEList<?>)getGuards()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__OPERATIONS:
+				return ((InternalEList<?>)getOperations()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL:
+				return basicSetConvertToModel(null, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION:
+				return basicSetConvertToPresentation(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__NAME:
+				return getName();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__FUNCTIONS:
+				return getFunctions();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__RATES:
+				return getRates();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__TESTS:
+				return getTests();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__GUARDS:
+				return getGuards();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__OPERATIONS:
+				return getOperations();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL:
+				return getConvertToModel();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION:
+				return getConvertToPresentation();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__NAME:
+				setName((String)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__FUNCTIONS:
+				getFunctions().clear();
+				getFunctions().addAll((Collection<? extends FunctionLibraryFunction>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__RATES:
+				getRates().clear();
+				getRates().addAll((Collection<? extends FunctionLibraryRate>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__TESTS:
+				getTests().clear();
+				getTests().addAll((Collection<? extends FunctionLibraryTest>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__GUARDS:
+				getGuards().clear();
+				getGuards().addAll((Collection<? extends FunctionLibraryGuard>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__OPERATIONS:
+				getOperations().clear();
+				getOperations().addAll((Collection<? extends FunctionLibraryOperation>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL:
+				setConvertToModel((FunctionConvertToModel)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION:
+				setConvertToPresentation((FunctionConvertToPresentation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__FUNCTIONS:
+				getFunctions().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__RATES:
+				getRates().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__TESTS:
+				getTests().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__GUARDS:
+				getGuards().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__OPERATIONS:
+				getOperations().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL:
+				setConvertToModel((FunctionConvertToModel)null);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION:
+				setConvertToPresentation((FunctionConvertToPresentation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__FUNCTIONS:
+				return functions != null && !functions.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__RATES:
+				return rates != null && !rates.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__TESTS:
+				return tests != null && !tests.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__GUARDS:
+				return guards != null && !guards.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__OPERATIONS:
+				return operations != null && !operations.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_MODEL:
+				return convertToModel != null;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP__CONVERT_TO_PRESENTATION:
+				return convertToPresentation != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FunctionLibraryGroupImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryGuardImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryGuardImpl.java
new file mode 100644
index 0000000..10d24c9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryGuardImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Guard</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryGuardImpl extends FunctionLibraryBaseFunctionImpl implements FunctionLibraryGuard {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryGuardImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_GUARD;
+	}
+
+} //FunctionLibraryGuardImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryModelImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryModelImpl.java
new file mode 100644
index 0000000..4869720
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryModelImpl.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryModelImpl#getPckg <em>Pckg</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryModelImpl extends MinimalEObjectImpl.Container implements FunctionLibraryModel {
+	/**
+	 * The cached value of the '{@link #getPckg() <em>Pckg</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPckg()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryPackage pckg;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryPackage getPckg() {
+		return pckg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPckg(FunctionLibraryPackage newPckg, NotificationChain msgs) {
+		FunctionLibraryPackage oldPckg = pckg;
+		pckg = newPckg;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG, oldPckg, newPckg);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPckg(FunctionLibraryPackage newPckg) {
+		if (newPckg != pckg) {
+			NotificationChain msgs = null;
+			if (pckg != null)
+				msgs = ((InternalEObject)pckg).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG, null, msgs);
+			if (newPckg != null)
+				msgs = ((InternalEObject)newPckg).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG, null, msgs);
+			msgs = basicSetPckg(newPckg, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG, newPckg, newPckg));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG:
+				return basicSetPckg(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG:
+				return getPckg();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG:
+				setPckg((FunctionLibraryPackage)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG:
+				setPckg((FunctionLibraryPackage)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL__PCKG:
+				return pckg != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FunctionLibraryModelImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryOperationImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryOperationImpl.java
new file mode 100644
index 0000000..e01d5e2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryOperationImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryOperationImpl extends FunctionLibraryBaseFunctionImpl implements FunctionLibraryOperation {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryOperationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_OPERATION;
+	}
+
+} //FunctionLibraryOperationImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryPackageImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryPackageImpl.java
new file mode 100644
index 0000000..9e70010
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryPackageImpl.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+
+import org.eclipse.xtext.xtype.XImportSection;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl#getImportSection <em>Import Section</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl#getRatings <em>Ratings</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl#getGroups <em>Groups</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryPackageImpl#getConverters <em>Converters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryPackageImpl extends LPackageImpl implements FunctionLibraryPackage {
+	/**
+	 * The cached value of the '{@link #getImportSection() <em>Import Section</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImportSection()
+	 * @generated
+	 * @ordered
+	 */
+	protected XImportSection importSection;
+
+	/**
+	 * The cached value of the '{@link #getRatings() <em>Ratings</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRatings()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryRating> ratings;
+
+	/**
+	 * The cached value of the '{@link #getGroups() <em>Groups</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroups()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryGroup> groups;
+
+	/**
+	 * The cached value of the '{@link #getConverters() <em>Converters</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConverters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryConverterGroup> converters;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryPackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_PACKAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XImportSection getImportSection() {
+		return importSection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetImportSection(XImportSection newImportSection, NotificationChain msgs) {
+		XImportSection oldImportSection = importSection;
+		importSection = newImportSection;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION, oldImportSection, newImportSection);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImportSection(XImportSection newImportSection) {
+		if (newImportSection != importSection) {
+			NotificationChain msgs = null;
+			if (importSection != null)
+				msgs = ((InternalEObject)importSection).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION, null, msgs);
+			if (newImportSection != null)
+				msgs = ((InternalEObject)newImportSection).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION, null, msgs);
+			msgs = basicSetImportSection(newImportSection, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION, newImportSection, newImportSection));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryRating> getRatings() {
+		if (ratings == null) {
+			ratings = new EObjectContainmentEList<FunctionLibraryRating>(FunctionLibraryRating.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__RATINGS);
+		}
+		return ratings;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryGroup> getGroups() {
+		if (groups == null) {
+			groups = new EObjectContainmentEList<FunctionLibraryGroup>(FunctionLibraryGroup.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__GROUPS);
+		}
+		return groups;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryConverterGroup> getConverters() {
+		if (converters == null) {
+			converters = new EObjectContainmentEList<FunctionLibraryConverterGroup>(FunctionLibraryConverterGroup.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__CONVERTERS);
+		}
+		return converters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION:
+				return basicSetImportSection(null, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__RATINGS:
+				return ((InternalEList<?>)getRatings()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__GROUPS:
+				return ((InternalEList<?>)getGroups()).basicRemove(otherEnd, msgs);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__CONVERTERS:
+				return ((InternalEList<?>)getConverters()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION:
+				return getImportSection();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__RATINGS:
+				return getRatings();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__GROUPS:
+				return getGroups();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__CONVERTERS:
+				return getConverters();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION:
+				setImportSection((XImportSection)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__RATINGS:
+				getRatings().clear();
+				getRatings().addAll((Collection<? extends FunctionLibraryRating>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__GROUPS:
+				getGroups().clear();
+				getGroups().addAll((Collection<? extends FunctionLibraryGroup>)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__CONVERTERS:
+				getConverters().clear();
+				getConverters().addAll((Collection<? extends FunctionLibraryConverterGroup>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION:
+				setImportSection((XImportSection)null);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__RATINGS:
+				getRatings().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__GROUPS:
+				getGroups().clear();
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__CONVERTERS:
+				getConverters().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__IMPORT_SECTION:
+				return importSection != null;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__RATINGS:
+				return ratings != null && !ratings.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__GROUPS:
+				return groups != null && !groups.isEmpty();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE__CONVERTERS:
+				return converters != null && !converters.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FunctionLibraryPackageImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryParameterImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryParameterImpl.java
new file mode 100644
index 0000000..5f51810
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryParameterImpl.java
@@ -0,0 +1,256 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryParameterImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryParameterImpl#getParameterType <em>Parameter Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryParameterImpl extends MinimalEObjectImpl.Container implements FunctionLibraryParameter {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParameterType() <em>Parameter Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameterType()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference parameterType;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryParameterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_PARAMETER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getParameterType() {
+		return parameterType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParameterType(JvmTypeReference newParameterType, NotificationChain msgs) {
+		JvmTypeReference oldParameterType = parameterType;
+		parameterType = newParameterType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE, oldParameterType, newParameterType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParameterType(JvmTypeReference newParameterType) {
+		if (newParameterType != parameterType) {
+			NotificationChain msgs = null;
+			if (parameterType != null)
+				msgs = ((InternalEObject)parameterType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE, null, msgs);
+			if (newParameterType != null)
+				msgs = ((InternalEObject)newParameterType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE, null, msgs);
+			msgs = basicSetParameterType(newParameterType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE, newParameterType, newParameterType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE:
+				return basicSetParameterType(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__NAME:
+				return getName();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE:
+				return getParameterType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__NAME:
+				setName((String)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE:
+				setParameterType((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE:
+				setParameterType((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE:
+				return parameterType != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FunctionLibraryParameterImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRateImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRateImpl.java
new file mode 100644
index 0000000..e51d2b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRateImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Rate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRateImpl#getOftype <em>Oftype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryRateImpl extends FunctionLibraryBaseFunctionImpl implements FunctionLibraryRate {
+	/**
+	 * The cached value of the '{@link #getOftype() <em>Oftype</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOftype()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryRating oftype;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryRateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_RATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryRating getOftype() {
+		if (oftype != null && oftype.eIsProxy()) {
+			InternalEObject oldOftype = (InternalEObject)oftype;
+			oftype = (FunctionLibraryRating)eResolveProxy(oldOftype);
+			if (oftype != oldOftype) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE__OFTYPE, oldOftype, oftype));
+			}
+		}
+		return oftype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryRating basicGetOftype() {
+		return oftype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOftype(FunctionLibraryRating newOftype) {
+		FunctionLibraryRating oldOftype = oftype;
+		oftype = newOftype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE__OFTYPE, oldOftype, oftype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE__OFTYPE:
+				if (resolve) return getOftype();
+				return basicGetOftype();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE__OFTYPE:
+				setOftype((FunctionLibraryRating)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE__OFTYPE:
+				setOftype((FunctionLibraryRating)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE__OFTYPE:
+				return oftype != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FunctionLibraryRateImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRatingImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRatingImpl.java
new file mode 100644
index 0000000..3c8b9e5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRatingImpl.java
@@ -0,0 +1,233 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Rating</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingImpl#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryRatingImpl extends MinimalEObjectImpl.Container implements FunctionLibraryRating {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FunctionLibraryRatingItem> items;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryRatingImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_RATING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<FunctionLibraryRatingItem> getItems() {
+		if (items == null) {
+			items = new EObjectContainmentEList<FunctionLibraryRatingItem>(FunctionLibraryRatingItem.class, this, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__ITEMS:
+				return ((InternalEList<?>)getItems()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__NAME:
+				return getName();
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__ITEMS:
+				return getItems();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__NAME:
+				setName((String)newValue);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends FunctionLibraryRatingItem>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__ITEMS:
+				getItems().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING__ITEMS:
+				return items != null && !items.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FunctionLibraryRatingImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRatingItemImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRatingItemImpl.java
new file mode 100644
index 0000000..4ffd56a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryRatingItemImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Rating Item</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.functionlibrarydsl.impl.FunctionLibraryRatingItemImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryRatingItemImpl extends MinimalEObjectImpl.Container implements FunctionLibraryRatingItem {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryRatingItemImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_RATING_ITEM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FunctionLibraryRatingItemImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryStatemachineGroupImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryStatemachineGroupImpl.java
new file mode 100644
index 0000000..709cc12
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryStatemachineGroupImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Statemachine Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryStatemachineGroupImpl extends FunctionLibraryGroupImpl implements FunctionLibraryStatemachineGroup {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryStatemachineGroupImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_STATEMACHINE_GROUP;
+	}
+
+} //FunctionLibraryStatemachineGroupImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryTestImpl.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryTestImpl.java
new file mode 100644
index 0000000..696bf19
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/impl/FunctionLibraryTestImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Library Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionLibraryTestImpl extends FunctionLibraryBaseFunctionImpl implements FunctionLibraryTest {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryTestImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_TEST;
+	}
+
+} //FunctionLibraryTestImpl
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/util/FunctionLibraryDSLAdapterFactory.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/util/FunctionLibraryDSLAdapterFactory.java
new file mode 100644
index 0000000..97a7c7c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/util/FunctionLibraryDSLAdapterFactory.java
@@ -0,0 +1,458 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage
+ * @generated
+ */
+public class FunctionLibraryDSLAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static FunctionLibraryDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryDSLAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = FunctionLibraryDSLPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionLibraryDSLSwitch<Adapter> modelSwitch =
+		new FunctionLibraryDSLSwitch<Adapter>() {
+			@Override
+			public Adapter caseFunctionLibraryModel(FunctionLibraryModel object) {
+				return createFunctionLibraryModelAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryPackage(FunctionLibraryPackage object) {
+				return createFunctionLibraryPackageAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryGroup(FunctionLibraryGroup object) {
+				return createFunctionLibraryGroupAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryBlipGroup(FunctionLibraryBlipGroup object) {
+				return createFunctionLibraryBlipGroupAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryStatemachineGroup(FunctionLibraryStatemachineGroup object) {
+				return createFunctionLibraryStatemachineGroupAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryConverterGroup(FunctionLibraryConverterGroup object) {
+				return createFunctionLibraryConverterGroupAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryRating(FunctionLibraryRating object) {
+				return createFunctionLibraryRatingAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryRatingItem(FunctionLibraryRatingItem object) {
+				return createFunctionLibraryRatingItemAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryBaseFunction(FunctionLibraryBaseFunction object) {
+				return createFunctionLibraryBaseFunctionAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryFunction(FunctionLibraryFunction object) {
+				return createFunctionLibraryFunctionAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryTest(FunctionLibraryTest object) {
+				return createFunctionLibraryTestAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryRate(FunctionLibraryRate object) {
+				return createFunctionLibraryRateAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryGuard(FunctionLibraryGuard object) {
+				return createFunctionLibraryGuardAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryOperation(FunctionLibraryOperation object) {
+				return createFunctionLibraryOperationAdapter();
+			}
+			@Override
+			public Adapter caseFunctionConvertToModel(FunctionConvertToModel object) {
+				return createFunctionConvertToModelAdapter();
+			}
+			@Override
+			public Adapter caseFunctionConvertToPresentation(FunctionConvertToPresentation object) {
+				return createFunctionConvertToPresentationAdapter();
+			}
+			@Override
+			public Adapter caseFunctionLibraryParameter(FunctionLibraryParameter object) {
+				return createFunctionLibraryParameterAdapter();
+			}
+			@Override
+			public Adapter caseLLazyResolver(LLazyResolver object) {
+				return createLLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseLPackage(LPackage object) {
+				return createLPackageAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel <em>Function Library Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage <em>Function Library Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryPackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup <em>Function Library Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup <em>Function Library Blip Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryBlipGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup <em>Function Library Statemachine Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryStatemachineGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup <em>Function Library Converter Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryConverterGroupAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating <em>Function Library Rating</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryRatingAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem <em>Function Library Rating Item</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryRatingItemAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction <em>Function Library Base Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryBaseFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction <em>Function Library Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest <em>Function Library Test</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryTestAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate <em>Function Library Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryRateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard <em>Function Library Guard</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryGuardAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation <em>Function Library Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryOperationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel <em>Function Convert To Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel
+	 * @generated
+	 */
+	public Adapter createFunctionConvertToModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation <em>Function Convert To Presentation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation
+	 * @generated
+	 */
+	public Adapter createFunctionConvertToPresentationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter <em>Function Library Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter
+	 * @generated
+	 */
+	public Adapter createFunctionLibraryParameterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver <em>LLazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver
+	 * @generated
+	 */
+	public Adapter createLLazyResolverAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage <em>LPackage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LPackage
+	 * @generated
+	 */
+	public Adapter createLPackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //FunctionLibraryDSLAdapterFactory
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/util/FunctionLibraryDSLSwitch.java b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/util/FunctionLibraryDSLSwitch.java
new file mode 100644
index 0000000..ed1adb4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/emf-gen/org/eclipse/osbp/xtext/functionlibrarydsl/util/FunctionLibraryDSLSwitch.java
@@ -0,0 +1,502 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage
+ * @generated
+ */
+public class FunctionLibraryDSLSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static FunctionLibraryDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryDSLSwitch() {
+		if (modelPackage == null) {
+			modelPackage = FunctionLibraryDSLPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL: {
+				FunctionLibraryModel functionLibraryModel = (FunctionLibraryModel)theEObject;
+				T result = caseFunctionLibraryModel(functionLibraryModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE: {
+				FunctionLibraryPackage functionLibraryPackage = (FunctionLibraryPackage)theEObject;
+				T result = caseFunctionLibraryPackage(functionLibraryPackage);
+				if (result == null) result = caseLPackage(functionLibraryPackage);
+				if (result == null) result = caseLLazyResolver(functionLibraryPackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP: {
+				FunctionLibraryGroup functionLibraryGroup = (FunctionLibraryGroup)theEObject;
+				T result = caseFunctionLibraryGroup(functionLibraryGroup);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BLIP_GROUP: {
+				FunctionLibraryBlipGroup functionLibraryBlipGroup = (FunctionLibraryBlipGroup)theEObject;
+				T result = caseFunctionLibraryBlipGroup(functionLibraryBlipGroup);
+				if (result == null) result = caseFunctionLibraryGroup(functionLibraryBlipGroup);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_STATEMACHINE_GROUP: {
+				FunctionLibraryStatemachineGroup functionLibraryStatemachineGroup = (FunctionLibraryStatemachineGroup)theEObject;
+				T result = caseFunctionLibraryStatemachineGroup(functionLibraryStatemachineGroup);
+				if (result == null) result = caseFunctionLibraryGroup(functionLibraryStatemachineGroup);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP: {
+				FunctionLibraryConverterGroup functionLibraryConverterGroup = (FunctionLibraryConverterGroup)theEObject;
+				T result = caseFunctionLibraryConverterGroup(functionLibraryConverterGroup);
+				if (result == null) result = caseFunctionLibraryGroup(functionLibraryConverterGroup);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING: {
+				FunctionLibraryRating functionLibraryRating = (FunctionLibraryRating)theEObject;
+				T result = caseFunctionLibraryRating(functionLibraryRating);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM: {
+				FunctionLibraryRatingItem functionLibraryRatingItem = (FunctionLibraryRatingItem)theEObject;
+				T result = caseFunctionLibraryRatingItem(functionLibraryRatingItem);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BASE_FUNCTION: {
+				FunctionLibraryBaseFunction functionLibraryBaseFunction = (FunctionLibraryBaseFunction)theEObject;
+				T result = caseFunctionLibraryBaseFunction(functionLibraryBaseFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION: {
+				FunctionLibraryFunction functionLibraryFunction = (FunctionLibraryFunction)theEObject;
+				T result = caseFunctionLibraryFunction(functionLibraryFunction);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionLibraryFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_TEST: {
+				FunctionLibraryTest functionLibraryTest = (FunctionLibraryTest)theEObject;
+				T result = caseFunctionLibraryTest(functionLibraryTest);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionLibraryTest);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE: {
+				FunctionLibraryRate functionLibraryRate = (FunctionLibraryRate)theEObject;
+				T result = caseFunctionLibraryRate(functionLibraryRate);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionLibraryRate);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GUARD: {
+				FunctionLibraryGuard functionLibraryGuard = (FunctionLibraryGuard)theEObject;
+				T result = caseFunctionLibraryGuard(functionLibraryGuard);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionLibraryGuard);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_OPERATION: {
+				FunctionLibraryOperation functionLibraryOperation = (FunctionLibraryOperation)theEObject;
+				T result = caseFunctionLibraryOperation(functionLibraryOperation);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionLibraryOperation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_CONVERT_TO_MODEL: {
+				FunctionConvertToModel functionConvertToModel = (FunctionConvertToModel)theEObject;
+				T result = caseFunctionConvertToModel(functionConvertToModel);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionConvertToModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_CONVERT_TO_PRESENTATION: {
+				FunctionConvertToPresentation functionConvertToPresentation = (FunctionConvertToPresentation)theEObject;
+				T result = caseFunctionConvertToPresentation(functionConvertToPresentation);
+				if (result == null) result = caseFunctionLibraryBaseFunction(functionConvertToPresentation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER: {
+				FunctionLibraryParameter functionLibraryParameter = (FunctionLibraryParameter)theEObject;
+				T result = caseFunctionLibraryParameter(functionLibraryParameter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryModel(FunctionLibraryModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Package</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryPackage(FunctionLibraryPackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryGroup(FunctionLibraryGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Blip Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Blip Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryBlipGroup(FunctionLibraryBlipGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Statemachine Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Statemachine Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryStatemachineGroup(FunctionLibraryStatemachineGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Converter Group</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Converter Group</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryConverterGroup(FunctionLibraryConverterGroup object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Rating</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Rating</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryRating(FunctionLibraryRating object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Rating Item</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Rating Item</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryRatingItem(FunctionLibraryRatingItem object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Base Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Base Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryBaseFunction(FunctionLibraryBaseFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryFunction(FunctionLibraryFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Test</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Test</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryTest(FunctionLibraryTest object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Rate</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Rate</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryRate(FunctionLibraryRate object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Guard</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Guard</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryGuard(FunctionLibraryGuard object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Operation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Operation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryOperation(FunctionLibraryOperation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Convert To Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Convert To Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionConvertToModel(FunctionConvertToModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Convert To Presentation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Convert To Presentation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionConvertToPresentation(FunctionConvertToPresentation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Function Library Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Function Library Parameter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFunctionLibraryParameter(FunctionLibraryParameter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LLazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LLazy Resolver</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLLazyResolver(LLazyResolver object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LPackage</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LPackage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLPackage(LPackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //FunctionLibraryDSLSwitch
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/epl-v10.html b/org.eclipse.osbp.xtext.functionlibrarydsl/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/license.html b/org.eclipse.osbp.xtext.functionlibrarydsl/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/model/FunctionLibraryDSL.xcore b/org.eclipse.osbp.xtext.functionlibrarydsl/model/FunctionLibraryDSL.xcore
new file mode 100644
index 0000000..f4be2db
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/model/FunctionLibraryDSL.xcore
@@ -0,0 +1,112 @@
+@xcore.lang.GenModel(fileExtensions="functionlibrary")
+@GenModel(modelName="FunctionLibraryDSL")
+@GenModel(prefix="FunctionLibraryDSL")
+@GenModel(updateClasspath="false")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+  
+ Contributors:  
+ 		Christophe Loetz - Initial implementation
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL")
+@Ecore(nsPrefix="functionLibraryDSL")
+@Ecore(rootPackage="functionLibraryDSL")
+package org.eclipse.osbp.xtext.functionlibrarydsl
+
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.xbase.XExpression
+import org.eclipse.xtext.xtype.XImportSection
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+
+class FunctionLibraryModel {
+	contains FunctionLibraryPackage pckg
+}
+ 
+class FunctionLibraryPackage extends LPackage{
+	contains XImportSection importSection
+	contains FunctionLibraryRating[] ratings
+	contains FunctionLibraryGroup[] groups
+	contains FunctionLibraryConverterGroup[] converters
+}
+
+class FunctionLibraryGroup {
+	String name
+//	contains FunctionLibraryProperty[] properties
+	contains FunctionLibraryFunction[] functions
+	contains FunctionLibraryRate[] rates
+	contains FunctionLibraryTest[] tests
+	contains FunctionLibraryGuard[] guards
+	contains FunctionLibraryOperation[] operations
+	contains FunctionConvertToModel convertToModel
+	contains FunctionConvertToPresentation convertToPresentation
+}
+
+class FunctionLibraryBlipGroup extends FunctionLibraryGroup {
+}
+
+class FunctionLibraryStatemachineGroup extends FunctionLibraryGroup {
+}
+
+class FunctionLibraryConverterGroup extends FunctionLibraryGroup {
+	refers LDataType convertToModelDatatype
+	refers LDataType convertToPresentationDatatype
+}
+
+//class FunctionLibraryProperty {
+//	String name
+//	contains JvmTypeReference oftype
+//}
+
+class FunctionLibraryRating {
+	String name
+	contains FunctionLibraryRatingItem[] items
+}
+
+class FunctionLibraryRatingItem {
+	String name
+}
+
+class FunctionLibraryBaseFunction {
+	String name
+	contains FunctionLibraryParameter[] params
+	contains XExpression body
+}
+
+class FunctionLibraryFunction extends FunctionLibraryBaseFunction {
+	contains JvmParameterizedTypeReference oftype
+}
+
+class FunctionLibraryTest extends FunctionLibraryBaseFunction {
+}
+
+class FunctionLibraryRate extends FunctionLibraryBaseFunction {
+	refers FunctionLibraryRating oftype
+}
+
+class FunctionLibraryGuard extends FunctionLibraryBaseFunction {
+}
+
+class FunctionLibraryOperation extends FunctionLibraryBaseFunction {
+}
+
+class FunctionConvertToModel extends FunctionLibraryBaseFunction {
+}
+
+class FunctionConvertToPresentation extends FunctionLibraryBaseFunction {
+}
+
+class FunctionLibraryParameter {
+	String name
+	contains JvmTypeReference parameterType
+//	contains XExpression requires
+}
+
+//class FunctionLibraryRequirement extends XExpression {
+//}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/plugin.properties b/org.eclipse.osbp.xtext.functionlibrarydsl/plugin.properties
new file mode 100644
index 0000000..ee7c623
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors:  
+#  		Joerg Riegel - Initial implementation 
+#  
+
+pluginName = OSBP Function Library DSL
+providerName = http://www.osbee.org
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/plugin.xml b/org.eclipse.osbp.xtext.functionlibrarydsl/plugin.xml
new file mode 100644
index 0000000..8931e02
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated FunctionLibraryDSL -->
+      <package
+            uri="http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL"
+            class="org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage"
+            genModel="model/FunctionLibraryDSL.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/pom.xml b/org.eclipse.osbp.xtext.functionlibrarydsl/pom.xml
new file mode 100644
index 0000000..14918cd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<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</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/README.txt b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/README.txt
new file mode 100644
index 0000000..bbbe557
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/README.txt
@@ -0,0 +1 @@
+dummy file needed for git for necessary but empty directories!
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/AbstractFunctionLibraryDslRuntimeModule.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/AbstractFunctionLibraryDslRuntimeModule.java
new file mode 100644
index 0000000..547dfed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/AbstractFunctionLibraryDslRuntimeModule.java
@@ -0,0 +1,348 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDslRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractFunctionLibraryDslRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDsl.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl");
+	}
+	
+	public void configureFileExtensions(Binder binder) {
+		if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("functionlibrary");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.serializer.FunctionLibraryDslSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.serializer.FunctionLibraryDslSyntacticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.ISerializer> bindISerializer() {
+		return org.eclipse.xtext.serializer.impl.Serializer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.FunctionLibraryDslParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.FunctionLibraryDslAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslLexer> provideInternalFunctionLibraryDslLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureRuntimeLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.functionlibrarydsl.validation.FunctionLibraryDslValidator> bindFunctionLibraryDslValidator() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.validation.FunctionLibraryDslValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.formatting.FunctionLibraryDslFormatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
+		return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ClasspathBasedTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.interpreter.IEvaluationContext> bindIEvaluationContext() {
+		return org.eclipse.xtext.xbase.interpreter.impl.DefaultEvaluationContext.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter> bindIExpressionInterpreter() {
+		return org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameConverter> bindIQualifiedNameConverter() {
+		return org.eclipse.xtext.xbase.XbaseQualifiedNameConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
+		return org.eclipse.xtext.xbase.conversion.XbaseValueConverterService.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureLinkingIScopeProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.linking.LinkingScopeProviderBinding.class).to(org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureSerializerIScopeProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class).to(org.eclipse.xtext.xbase.serializer.SerializerScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.xbase.scoping.XImportSectionNamespaceScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return org.eclipse.xtext.xbase.linking.XbaseLazyLinker.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return org.eclipse.xtext.xbase.resource.BatchLinkableResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator> bindJvmTypeReferencesValidator() {
+		return org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() {
+		return org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IResourceDescription.Manager> bindIResourceDescription$Manager() {
+		return org.eclipse.xtext.resource.DerivedStateAwareResourceDescriptionManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return org.eclipse.xtext.xbase.compiler.JvmModelGenerator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public org.eclipse.xtext.xtype.XtypeFactory bindXtypeFactoryToInstance() {
+		return org.eclipse.xtext.xtype.XtypeFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.debug.IStratumBreakpointSupport> bindIStratumBreakpointSupport() {
+		return org.eclipse.xtext.xbase.debug.XbaseStratumBreakpointSupport.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.LineSeparatorHarmonizer> bindLineSeparatorHarmonizer() {
+		return org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
+		return org.eclipse.xtext.xbase.resource.XbaseResourceDescriptionStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.SeverityConverter> bindSeverityConverter() {
+		return org.eclipse.xtext.xbase.validation.XbaseSeverityConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
+		return org.eclipse.xtext.xbase.validation.XbaseConfigurableIssueCodes.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
+		return org.eclipse.xtext.xbase.linking.BrokenConstructorCallAwareEObjectAtOffsetHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.CancelableDiagnostician> bindCancelableDiagnostician() {
+		return org.eclipse.xtext.xbase.validation.XbaseDiagnostician.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.featurecalls.StaticImplicitMethodsFeatureForTypeProvider.ExtensionClassNameProvider> bindStaticImplicitMethodsFeatureForTypeProvider$ExtensionClassNameProvider() {
+		return org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedTypesAdapter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtend.lib.macro.file.MutableFileSystemSupport> bindMutableFileSystemSupport() {
+		return org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtend.lib.macro.file.FileLocations> bindFileLocations() {
+		return org.eclipse.xtext.xbase.file.FileLocationsImpl.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends com.google.inject.Provider<org.eclipse.xtext.xbase.file.WorkspaceConfig>> provideWorkspaceConfig() {
+		return org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer> bindITypeComputer() {
+		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
+		return org.eclipse.xtext.xbase.annotations.validation.UnresolvedAnnotationTypeAwareMessageProducer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.ILocationInFileProvider> bindILocationInFileProvider() {
+		return org.eclipse.xtext.xbase.jvmmodel.JvmLocationInFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.validation.FeatureNameValidator> bindFeatureNameValidator() {
+		return org.eclipse.xtext.xbase.validation.LogicalContainerAwareFeatureNameValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
+		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareBatchTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
+		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.IResourceValidator> bindIResourceValidator() {
+		return org.eclipse.xtext.xbase.annotations.validation.DerivedStateAwareResourceValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer> bindIJvmModelInferrer() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel.FunctionLibraryDslJvmModelInferrer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslStandaloneSetupGenerated.java
new file mode 100644
index 0000000..f719dbc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslStandaloneSetupGenerated.java
@@ -0,0 +1,53 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDslRuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+
+		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("functionlibrary", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("functionlibrary", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/FunctionLibraryDslAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/FunctionLibraryDslAntlrTokenFileProvider.java
new file mode 100644
index 0000000..c68a4c4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/FunctionLibraryDslAntlrTokenFileProvider.java
@@ -0,0 +1,26 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class FunctionLibraryDslAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/FunctionLibraryDslParser.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/FunctionLibraryDslParser.java
new file mode 100644
index 0000000..e155be4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/FunctionLibraryDslParser.java
@@ -0,0 +1,50 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+
+public class FunctionLibraryDslParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private FunctionLibraryDslGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal.InternalFunctionLibraryDslParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "FunctionLibraryModel";
+	}
+	
+	public FunctionLibraryDslGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(FunctionLibraryDslGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g
new file mode 100644
index 0000000..7cdbff2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g
@@ -0,0 +1,8041 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+grammar InternalFunctionLibraryDsl;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private FunctionLibraryDslGrammarAccess grammarAccess;
+ 	
+    public InternalFunctionLibraryDslParser(TokenStream input, FunctionLibraryDslGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "FunctionLibraryModel";	
+   	}
+   	
+   	@Override
+   	protected FunctionLibraryDslGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleFunctionLibraryModel
+entryRuleFunctionLibraryModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryModelRule()); }
+	 iv_ruleFunctionLibraryModel=ruleFunctionLibraryModel 
+	 { $current=$iv_ruleFunctionLibraryModel.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryModel
+ruleFunctionLibraryModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryModelAccess().getPckgFunctionLibraryPackageParserRuleCall_0()); 
+	    }
+		lv_pckg_0_0=ruleFunctionLibraryPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryModelRule());
+	        }
+       		set(
+       			$current, 
+       			"pckg",
+        		lv_pckg_0_0, 
+        		"FunctionLibraryPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryPackage
+entryRuleFunctionLibraryPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryPackageRule()); }
+	 iv_ruleFunctionLibraryPackage=ruleFunctionLibraryPackage 
+	 { $current=$iv_ruleFunctionLibraryPackage.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryPackage
+ruleFunctionLibraryPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getFunctionLibraryPackageAccess().getFunctionLibraryPackageAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getImportSectionXImportSectionParserRuleCall_1_0()); 
+	    }
+		lv_importSection_1_0=ruleXImportSection		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"importSection",
+        		lv_importSection_1_0, 
+        		"XImportSection");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_2='package' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryPackageAccess().getPackageKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getNameQualifiedNameParserRuleCall_3_0()); 
+	    }
+		lv_name_3_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_3_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryPackageAccess().getLeftCurlyBracketKeyword_4());
+    }
+((
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0()); 
+	    }
+		lv_groups_5_1=ruleFunctionLibraryGroup		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"groups",
+        		lv_groups_5_1, 
+        		"FunctionLibraryGroup");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1()); 
+	    }
+		lv_groups_5_2=ruleFunctionLibraryBlipGroup		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"groups",
+        		lv_groups_5_2, 
+        		"FunctionLibraryBlipGroup");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2()); 
+	    }
+		lv_groups_5_3=ruleFunctionLibraryConverterGroup		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"groups",
+        		lv_groups_5_3, 
+        		"FunctionLibraryConverterGroup");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3()); 
+	    }
+		lv_groups_5_4=ruleFunctionLibraryStatemachineGroup		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"groups",
+        		lv_groups_5_4, 
+        		"FunctionLibraryStatemachineGroup");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getRatingsFunctionLibraryRatingParserRuleCall_5_1_0()); 
+	    }
+		lv_ratings_6_0=ruleFunctionLibraryRating		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"ratings",
+        		lv_ratings_6_0, 
+        		"FunctionLibraryRating");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getFunctionLibraryPackageAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryGroup
+entryRuleFunctionLibraryGroup returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryGroupRule()); }
+	 iv_ruleFunctionLibraryGroup=ruleFunctionLibraryGroup 
+	 { $current=$iv_ruleFunctionLibraryGroup.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryGroup
+ruleFunctionLibraryGroup returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='group' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryGroupAccess().getGroupKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryGroupAccess().getLeftCurlyBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0()); 
+	    }
+		lv_functions_3_0=ruleFunctionLibraryFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"functions",
+        		lv_functions_3_0, 
+        		"FunctionLibraryFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getTestsFunctionLibraryTestParserRuleCall_3_1_0()); 
+	    }
+		lv_tests_4_0=ruleFunctionLibraryTest		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"tests",
+        		lv_tests_4_0, 
+        		"FunctionLibraryTest");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getRatesFunctionLibraryRateParserRuleCall_3_2_0()); 
+	    }
+		lv_rates_5_0=ruleFunctionLibraryRate		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"rates",
+        		lv_rates_5_0, 
+        		"FunctionLibraryRate");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryGroupAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryBlipGroup
+entryRuleFunctionLibraryBlipGroup returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupRule()); }
+	 iv_ruleFunctionLibraryBlipGroup=ruleFunctionLibraryBlipGroup 
+	 { $current=$iv_ruleFunctionLibraryBlipGroup.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryBlipGroup
+ruleFunctionLibraryBlipGroup returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='blip-group' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryBlipGroupAccess().getBlipGroupKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryBlipGroupAccess().getLeftCurlyBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0()); 
+	    }
+		lv_functions_3_0=ruleFunctionLibraryFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"functions",
+        		lv_functions_3_0, 
+        		"FunctionLibraryFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsFunctionLibraryTestParserRuleCall_3_1_0()); 
+	    }
+		lv_tests_4_0=ruleFunctionLibraryTest		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"tests",
+        		lv_tests_4_0, 
+        		"FunctionLibraryTest");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesFunctionLibraryRateParserRuleCall_3_2_0()); 
+	    }
+		lv_rates_5_0=ruleFunctionLibraryRate		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"rates",
+        		lv_rates_5_0, 
+        		"FunctionLibraryRate");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryBlipGroupAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryStatemachineGroup
+entryRuleFunctionLibraryStatemachineGroup returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupRule()); }
+	 iv_ruleFunctionLibraryStatemachineGroup=ruleFunctionLibraryStatemachineGroup 
+	 { $current=$iv_ruleFunctionLibraryStatemachineGroup.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryStatemachineGroup
+ruleFunctionLibraryStatemachineGroup returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='statemachine' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryStatemachineGroupAccess().getStatemachineKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryStatemachineGroupAccess().getLeftCurlyBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsFunctionLibraryOperationParserRuleCall_3_0_0()); 
+	    }
+		lv_operations_3_0=ruleFunctionLibraryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"operations",
+        		lv_operations_3_0, 
+        		"FunctionLibraryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsFunctionLibraryGuardParserRuleCall_3_1_0()); 
+	    }
+		lv_guards_4_0=ruleFunctionLibraryGuard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"guards",
+        		lv_guards_4_0, 
+        		"FunctionLibraryGuard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsFunctionLibraryFunctionParserRuleCall_3_2_0()); 
+	    }
+		lv_functions_5_0=ruleFunctionLibraryFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+	        }
+       		add(
+       			$current, 
+       			"functions",
+        		lv_functions_5_0, 
+        		"FunctionLibraryFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryStatemachineGroupAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryConverterGroup
+entryRuleFunctionLibraryConverterGroup returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupRule()); }
+	 iv_ruleFunctionLibraryConverterGroup=ruleFunctionLibraryConverterGroup 
+	 { $current=$iv_ruleFunctionLibraryConverterGroup.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryConverterGroup
+ruleFunctionLibraryConverterGroup returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='converter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryConverterGroupAccess().getConverterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryConverterGroupRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryConverterGroupAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='model-datatype' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getFunctionLibraryConverterGroupAccess().getModelDatatypeKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFunctionLibraryConverterGroupRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelDatatypeLDataTypeCrossReference_4_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='presentation-datatype' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getFunctionLibraryConverterGroupAccess().getPresentationDatatypeKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFunctionLibraryConverterGroupRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationDatatypeLDataTypeCrossReference_6_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelFunctionConvertToModelParserRuleCall_7_0()); 
+	    }
+		lv_convertToModel_7_0=ruleFunctionConvertToModel		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryConverterGroupRule());
+	        }
+       		set(
+       			$current, 
+       			"convertToModel",
+        		lv_convertToModel_7_0, 
+        		"FunctionConvertToModel");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationFunctionConvertToPresentationParserRuleCall_8_0()); 
+	    }
+		lv_convertToPresentation_8_0=ruleFunctionConvertToPresentation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryConverterGroupRule());
+	        }
+       		set(
+       			$current, 
+       			"convertToPresentation",
+        		lv_convertToPresentation_8_0, 
+        		"FunctionConvertToPresentation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getFunctionLibraryConverterGroupAccess().getRightCurlyBracketKeyword_9());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionConvertToModel
+entryRuleFunctionConvertToModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionConvertToModelRule()); }
+	 iv_ruleFunctionConvertToModel=ruleFunctionConvertToModel 
+	 { $current=$iv_ruleFunctionConvertToModel.current; } 
+	 EOF 
+;
+
+// Rule FunctionConvertToModel
+ruleFunctionConvertToModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='to-model' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionConvertToModelAccess().getToModelKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionConvertToModelAccess().getBodyXBlockExpressionParserRuleCall_1_0()); 
+	    }
+		lv_body_1_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionConvertToModelRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_1_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionConvertToPresentation
+entryRuleFunctionConvertToPresentation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionConvertToPresentationRule()); }
+	 iv_ruleFunctionConvertToPresentation=ruleFunctionConvertToPresentation 
+	 { $current=$iv_ruleFunctionConvertToPresentation.current; } 
+	 EOF 
+;
+
+// Rule FunctionConvertToPresentation
+ruleFunctionConvertToPresentation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='to-presentation' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionConvertToPresentationAccess().getToPresentationKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionConvertToPresentationAccess().getBodyXBlockExpressionParserRuleCall_1_0()); 
+	    }
+		lv_body_1_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionConvertToPresentationRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_1_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryRating
+entryRuleFunctionLibraryRating returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryRatingRule()); }
+	 iv_ruleFunctionLibraryRating=ruleFunctionLibraryRating 
+	 { $current=$iv_ruleFunctionLibraryRating.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryRating
+ruleFunctionLibraryRating returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getFunctionLibraryRatingAccess().getFunctionLibraryRatingAction_0(),
+            $current);
+    }
+)	otherlv_1='rating' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFunctionLibraryRatingAccess().getRatingKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRatingAccess().getNameValidIDParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRatingRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getFunctionLibraryRatingAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRatingAccess().getItemsFunctionLibraryRatingItemParserRuleCall_4_0()); 
+	    }
+		lv_items_4_0=ruleFunctionLibraryRatingItem		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRatingRule());
+	        }
+       		add(
+       			$current, 
+       			"items",
+        		lv_items_4_0, 
+        		"FunctionLibraryRatingItem");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getFunctionLibraryRatingAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryRatingItem
+entryRuleFunctionLibraryRatingItem returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryRatingItemRule()); }
+	 iv_ruleFunctionLibraryRatingItem=ruleFunctionLibraryRatingItem 
+	 { $current=$iv_ruleFunctionLibraryRatingItem.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryRatingItem
+ruleFunctionLibraryRatingItem returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRatingItemAccess().getNameValidIDParserRuleCall_0()); 
+	    }
+		lv_name_0_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRatingItemRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryFunction
+entryRuleFunctionLibraryFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryFunctionRule()); }
+	 iv_ruleFunctionLibraryFunction=ruleFunctionLibraryFunction 
+	 { $current=$iv_ruleFunctionLibraryFunction.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryFunction
+ruleFunctionLibraryFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='function' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryFunctionAccess().getFunctionKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryFunctionAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+	    }
+		lv_params_3_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_3_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryFunctionAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+	    }
+		lv_params_5_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_5_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryFunctionAccess().getRightParenthesisKeyword_4());
+    }
+	otherlv_7='returns' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getFunctionLibraryFunctionAccess().getReturnsKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getOftypeJvmParameterizedTypeReferenceParserRuleCall_6_0()); 
+	    }
+		lv_oftype_8_0=ruleJvmParameterizedTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"oftype",
+        		lv_oftype_8_0, 
+        		"JvmParameterizedTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getBodyXBlockExpressionParserRuleCall_7_0()); 
+	    }
+		lv_body_9_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_9_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryTest
+entryRuleFunctionLibraryTest returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryTestRule()); }
+	 iv_ruleFunctionLibraryTest=ruleFunctionLibraryTest 
+	 { $current=$iv_ruleFunctionLibraryTest.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryTest
+ruleFunctionLibraryTest returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='test' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryTestAccess().getTestKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryTestAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+	    }
+		lv_params_3_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_3_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryTestAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+	    }
+		lv_params_5_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_5_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryTestAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getBodyXBlockExpressionParserRuleCall_5_0()); 
+	    }
+		lv_body_7_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_7_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryRate
+entryRuleFunctionLibraryRate returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryRateRule()); }
+	 iv_ruleFunctionLibraryRate=ruleFunctionLibraryRate 
+	 { $current=$iv_ruleFunctionLibraryRate.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryRate
+ruleFunctionLibraryRate returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='rate' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryRateAccess().getRateKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryRateAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+	    }
+		lv_params_3_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_3_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryRateAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+	    }
+		lv_params_5_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_5_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryRateAccess().getRightParenthesisKeyword_4());
+    }
+	otherlv_7='returns' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getFunctionLibraryRateAccess().getReturnsKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFunctionLibraryRateRule());
+	        }
+        }
+	otherlv_8=RULE_ID
+	{
+		newLeafNode(otherlv_8, grammarAccess.getFunctionLibraryRateAccess().getOftypeFunctionLibraryRatingCrossReference_6_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getBodyXBlockExpressionParserRuleCall_7_0()); 
+	    }
+		lv_body_9_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_9_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryGuard
+entryRuleFunctionLibraryGuard returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryGuardRule()); }
+	 iv_ruleFunctionLibraryGuard=ruleFunctionLibraryGuard 
+	 { $current=$iv_ruleFunctionLibraryGuard.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryGuard
+ruleFunctionLibraryGuard returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='guard' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryGuardAccess().getGuardKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryGuardAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+	    }
+		lv_params_3_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_3_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryGuardAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+	    }
+		lv_params_5_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_5_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryGuardAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getBodyXBlockExpressionParserRuleCall_5_0()); 
+	    }
+		lv_body_7_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_7_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryOperation
+entryRuleFunctionLibraryOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryOperationRule()); }
+	 iv_ruleFunctionLibraryOperation=ruleFunctionLibraryOperation 
+	 { $current=$iv_ruleFunctionLibraryOperation.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryOperation
+ruleFunctionLibraryOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='operation' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryOperationAccess().getOperationKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryOperationAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+	    }
+		lv_params_3_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_3_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryOperationAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+	    }
+		lv_params_5_0=ruleFunctionLibraryParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_5_0, 
+        		"FunctionLibraryParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryOperationAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getBodyXBlockExpressionParserRuleCall_5_0()); 
+	    }
+		lv_body_7_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_7_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFunctionLibraryParameter
+entryRuleFunctionLibraryParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFunctionLibraryParameterRule()); }
+	 iv_ruleFunctionLibraryParameter=ruleFunctionLibraryParameter 
+	 { $current=$iv_ruleFunctionLibraryParameter.current; } 
+	 EOF 
+;
+
+// Rule FunctionLibraryParameter
+ruleFunctionLibraryParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+	    }
+		lv_parameterType_0_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"parameterType",
+        		lv_parameterType_0_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFunctionLibraryParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFunctionLibraryParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 iv_ruleTYPE_CROSS_REFERENCE=ruleTYPE_CROSS_REFERENCE 
+	 { $current=$iv_ruleTYPE_CROSS_REFERENCE.current.getText(); }  
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
+	 iv_ruleXAnnotation=ruleXAnnotation 
+	 { $current=$iv_ruleXAnnotation.current; } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+            $current);
+    }
+)	otherlv_1='@' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAnnotationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'(' 
+)=>	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+    }
+)((((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+	    }
+		lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		add(
+       			$current, 
+       			"elementValuePairs",
+        		lv_elementValuePairs_4_0, 
+        		"XAnnotationElementValuePair");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+    }
+((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+	    }
+		lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		add(
+       			$current, 
+       			"elementValuePairs",
+        		lv_elementValuePairs_6_0, 
+        		"XAnnotationElementValuePair");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+	    }
+		lv_value_7_0=ruleXAnnotationElementValueOrCommaList		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"XAnnotationElementValueOrCommaList");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair 
+	 { $current=$iv_ruleXAnnotationElementValuePair.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+	    }
+		lv_value_2_0=ruleXAnnotationElementValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_2_0, 
+        		"XAnnotationElementValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList 
+	 { $current=$iv_ruleXAnnotationElementValueOrCommaList.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((((
+)	'#' 
+	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+    }
+))((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+	    }
+		lv_elements_3_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+    }
+)
+    |(
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+    }
+    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+    { 
+        $current = $this_XAnnotationOrExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndAdd(
+            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+            $current);
+    }
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_elements_10_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_10_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+)?))
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
+	 iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue 
+	 { $current=$iv_ruleXAnnotationElementValue.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((((
+)	'#' 
+	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+    }
+))((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+	    }
+		lv_elements_3_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+    }
+    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+    { 
+        $current = $this_XAnnotationOrExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression 
+	 { $current=$iv_ruleXAnnotationOrExpression.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+    }
+    this_XAnnotation_0=ruleXAnnotation
+    { 
+        $current = $this_XAnnotation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
+	 iv_ruleXExpression=ruleXExpression 
+	 { $current=$iv_ruleXExpression.current; } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+    }
+    this_XAssignment_0=ruleXAssignment
+    { 
+        $current = $this_XAssignment_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
+	 iv_ruleXAssignment=ruleXAssignment 
+	 { $current=$iv_ruleXAssignment.current; } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAssignmentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+	    }
+		ruleFeatureCallID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    { 
+        newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+    }
+ruleOpSingleAssign
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+	    }
+		lv_value_3_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+    { 
+        newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+    }
+    this_XOrExpression_4=ruleXOrExpression
+    { 
+        $current = $this_XOrExpression_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpMultiAssign
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAssignmentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+	    }
+		ruleOpMultiAssign		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+	    }
+		lv_rightOperand_7_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_7_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+;
+
+
+
+
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); } 
+	 iv_ruleOpSingleAssign=ruleOpSingleAssign 
+	 { $current=$iv_ruleOpSingleAssign.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); } 
+	 iv_ruleOpMultiAssign=ruleOpMultiAssign 
+	 { $current=$iv_ruleOpMultiAssign.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='+=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+    }
+
+    |
+	kw='-=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+    }
+
+    |
+	kw='*=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+    }
+
+    |
+	kw='/=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+    }
+
+    |
+	kw='%=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+    }
+
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+    }
+
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+    }
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+    }
+)
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+    }
+(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+    }
+)?
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+    }
+))
+    ;
+
+
+
+
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
+	 iv_ruleXOrExpression=ruleXOrExpression 
+	 { $current=$iv_ruleXOrExpression.current; } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+    }
+    this_XAndExpression_0=ruleXAndExpression
+    { 
+        $current = $this_XAndExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpOr
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXOrExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpOr		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXAndExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XAndExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpOrRule()); } 
+	 iv_ruleOpOr=ruleOpOr 
+	 { $current=$iv_ruleOpOr.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='||' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
+	 iv_ruleXAndExpression=ruleXAndExpression 
+	 { $current=$iv_ruleXAndExpression.current; } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+    }
+    this_XEqualityExpression_0=ruleXEqualityExpression
+    { 
+        $current = $this_XEqualityExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpAnd
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAndExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpAnd		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXEqualityExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XEqualityExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpAndRule()); } 
+	 iv_ruleOpAnd=ruleOpAnd 
+	 { $current=$iv_ruleOpAnd.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='&&' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
+	 iv_ruleXEqualityExpression=ruleXEqualityExpression 
+	 { $current=$iv_ruleXEqualityExpression.current; } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+    }
+    this_XRelationalExpression_0=ruleXRelationalExpression
+    { 
+        $current = $this_XRelationalExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpEquality
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpEquality		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXRelationalExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XRelationalExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpEqualityRule()); } 
+	 iv_ruleOpEquality=ruleOpEquality 
+	 { $current=$iv_ruleOpEquality.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='==' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+    }
+
+    |
+	kw='!=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+    }
+
+    |
+	kw='===' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+    }
+
+    |
+	kw='!==' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
+	 iv_ruleXRelationalExpression=ruleXRelationalExpression 
+	 { $current=$iv_ruleXRelationalExpression.current; } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+    }
+    this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
+    { 
+        $current = $this_XOtherOperatorExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((((
+)	'instanceof' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            $current);
+    }
+)	otherlv_2='instanceof' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(((((
+)(
+(
+		ruleOpCompare
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+	    }
+		ruleOpCompare		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+	    }
+		lv_rightOperand_6_0=ruleXOtherOperatorExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_6_0, 
+        		"XOtherOperatorExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpCompareRule()); } 
+	 iv_ruleOpCompare=ruleOpCompare 
+	 { $current=$iv_ruleOpCompare.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+    }
+
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+    }
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+    }
+)
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression 
+	 { $current=$iv_ruleXOtherOperatorExpression.current; } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+    }
+    this_XAdditiveExpression_0=ruleXAdditiveExpression
+    { 
+        $current = $this_XAdditiveExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpOther
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpOther		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXAdditiveExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XAdditiveExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpOtherRule()); } 
+	 iv_ruleOpOther=ruleOpOther 
+	 { $current=$iv_ruleOpOther.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+    }
+
+    |
+	kw='..<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+    }
+
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+    }
+
+	kw='..' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+    }
+)
+    |
+	kw='..' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+    }
+
+    |
+	kw='=>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+    }
+
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+    }
+((((
+	'>' 
+
+	'>' 
+))=>(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+    }
+
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+    }
+))
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+    }
+))
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+    }
+((((
+	'<' 
+
+	'<' 
+))=>(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+    }
+
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+    }
+))
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+    }
+
+    |
+	kw='=>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+    }
+))
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+    }
+
+    |
+	kw='?:' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
+	 iv_ruleXAdditiveExpression=ruleXAdditiveExpression 
+	 { $current=$iv_ruleXAdditiveExpression.current; } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+    }
+    this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
+    { 
+        $current = $this_XMultiplicativeExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpAdd
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpAdd		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXMultiplicativeExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XMultiplicativeExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpAddRule()); } 
+	 iv_ruleOpAdd=ruleOpAdd 
+	 { $current=$iv_ruleOpAdd.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression 
+	 { $current=$iv_ruleXMultiplicativeExpression.current; } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+    }
+    this_XUnaryOperation_0=ruleXUnaryOperation
+    { 
+        $current = $this_XUnaryOperation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpMulti
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpMulti		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXUnaryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XUnaryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpMultiRule()); } 
+	 iv_ruleOpMulti=ruleOpMulti 
+	 { $current=$iv_ruleOpMulti.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='**' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+    }
+
+    |
+	kw='%' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
+	 iv_ruleXUnaryOperation=ruleXUnaryOperation 
+	 { $current=$iv_ruleXUnaryOperation.current; } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXUnaryOperationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+	    }
+		ruleOpUnary		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+	    }
+		lv_operand_2_0=ruleXUnaryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"operand",
+        		lv_operand_2_0, 
+        		"XUnaryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+    { 
+        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+    }
+    this_XCastedExpression_3=ruleXCastedExpression
+    { 
+        $current = $this_XCastedExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpUnaryRule()); } 
+	 iv_ruleOpUnary=ruleOpUnary 
+	 { $current=$iv_ruleOpUnary.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='!' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
+	 iv_ruleXCastedExpression=ruleXCastedExpression 
+	 { $current=$iv_ruleXCastedExpression.current; } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+    }
+    this_XPostfixOperation_0=ruleXPostfixOperation
+    { 
+        $current = $this_XPostfixOperation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)	'as' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            $current);
+    }
+)	otherlv_2='as' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
+	 iv_ruleXPostfixOperation=ruleXPostfixOperation 
+	 { $current=$iv_ruleXPostfixOperation.current; } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
+    }
+    this_XMemberFeatureCall_0=ruleXMemberFeatureCall
+    { 
+        $current = $this_XMemberFeatureCall_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)(
+(
+		ruleOpPostfix
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXPostfixOperationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+	    }
+		ruleOpPostfix		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpPostfixRule()); } 
+	 iv_ruleOpPostfix=ruleOpPostfix 
+	 { $current=$iv_ruleOpPostfix.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='++' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+    }
+
+    |
+	kw='--' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
+	 iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall 
+	 { $current=$iv_ruleXMemberFeatureCall.current; } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
+    }
+    this_XPrimaryExpression_0=ruleXPrimaryExpression
+    { 
+        $current = $this_XPrimaryExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            $current);
+    }
+)(	otherlv_2='.' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+    }
+
+    |(
+(
+		lv_explicitStatic_3_0=	'::' 
+    {
+        newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitStatic", true, "::");
+	    }
+
+)
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+	    }
+		ruleFeatureCallID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    { 
+        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
+    }
+ruleOpSingleAssign
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
+	    }
+		lv_value_6_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_6_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(((((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            $current);
+    }
+)(	otherlv_8='.' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+    }
+
+    |(
+(
+		lv_nullSafe_9_0=	'?.' 
+    {
+        newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "nullSafe", true, "?.");
+	    }
+
+)
+)
+    |(
+(
+		lv_explicitStatic_10_0=	'::' 
+    {
+        newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitStatic", true, "::");
+	    }
+
+)
+))))(	otherlv_11='<' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_typeArguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_13=',' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
+	    }
+		lv_typeArguments_14_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_14_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_15='>' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+    }
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+	    }
+		ruleIdOrSuper		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitOperationCall_17_0=	'(' 
+    {
+        newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
+	    }
+		lv_memberCallArguments_18_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_18_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
+	    }
+		lv_memberCallArguments_19_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_19_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
+	    }
+		lv_memberCallArguments_21_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_21_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_22=')' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
+	    }
+		lv_memberCallArguments_23_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_23_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?))*)
+;
+
+
+
+
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
+	 iv_ruleXPrimaryExpression=ruleXPrimaryExpression 
+	 { $current=$iv_ruleXPrimaryExpression.current; } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
+    }
+    this_XConstructorCall_0=ruleXConstructorCall
+    { 
+        $current = $this_XConstructorCall_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
+    }
+    this_XBlockExpression_1=ruleXBlockExpression
+    { 
+        $current = $this_XBlockExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
+    }
+    this_XSwitchExpression_2=ruleXSwitchExpression
+    { 
+        $current = $this_XSwitchExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'synchronized' 
+	'(' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+    }
+    this_XSynchronizedExpression_3=ruleXSynchronizedExpression
+    { 
+        $current = $this_XSynchronizedExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
+    }
+    this_XFeatureCall_4=ruleXFeatureCall
+    { 
+        $current = $this_XFeatureCall_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
+    }
+    this_XLiteral_5=ruleXLiteral
+    { 
+        $current = $this_XLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
+    }
+    this_XIfExpression_6=ruleXIfExpression
+    { 
+        $current = $this_XIfExpression_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+    }
+    this_XForLoopExpression_7=ruleXForLoopExpression
+    { 
+        $current = $this_XForLoopExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+    }
+    this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
+    { 
+        $current = $this_XBasicForLoopExpression_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
+    }
+    this_XWhileExpression_9=ruleXWhileExpression
+    { 
+        $current = $this_XWhileExpression_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
+    }
+    this_XDoWhileExpression_10=ruleXDoWhileExpression
+    { 
+        $current = $this_XDoWhileExpression_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
+    }
+    this_XThrowExpression_11=ruleXThrowExpression
+    { 
+        $current = $this_XThrowExpression_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
+    }
+    this_XReturnExpression_12=ruleXReturnExpression
+    { 
+        $current = $this_XReturnExpression_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
+    }
+    this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
+    { 
+        $current = $this_XTryCatchFinallyExpression_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
+    }
+    this_XParenthesizedExpression_14=ruleXParenthesizedExpression
+    { 
+        $current = $this_XParenthesizedExpression_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
+	 iv_ruleXLiteral=ruleXLiteral 
+	 { $current=$iv_ruleXLiteral.current; } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
+    }
+    this_XCollectionLiteral_0=ruleXCollectionLiteral
+    { 
+        $current = $this_XCollectionLiteral_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'[' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+    }
+    this_XClosure_1=ruleXClosure
+    { 
+        $current = $this_XClosure_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
+    }
+    this_XBooleanLiteral_2=ruleXBooleanLiteral
+    { 
+        $current = $this_XBooleanLiteral_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
+    }
+    this_XNumberLiteral_3=ruleXNumberLiteral
+    { 
+        $current = $this_XNumberLiteral_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
+    }
+    this_XNullLiteral_4=ruleXNullLiteral
+    { 
+        $current = $this_XNullLiteral_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
+    }
+    this_XStringLiteral_5=ruleXStringLiteral
+    { 
+        $current = $this_XStringLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
+    }
+    this_XTypeLiteral_6=ruleXTypeLiteral
+    { 
+        $current = $this_XTypeLiteral_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
+	 iv_ruleXCollectionLiteral=ruleXCollectionLiteral 
+	 { $current=$iv_ruleXCollectionLiteral.current; } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
+    }
+    this_XSetLiteral_0=ruleXSetLiteral
+    { 
+        $current = $this_XSetLiteral_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
+    }
+    this_XListLiteral_1=ruleXListLiteral
+    { 
+        $current = $this_XListLiteral_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
+	 iv_ruleXSetLiteral=ruleXSetLiteral 
+	 { $current=$iv_ruleXSetLiteral.current; } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+	    }
+		lv_elements_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
+	 iv_ruleXListLiteral=ruleXListLiteral 
+	 { $current=$iv_ruleXListLiteral.current; } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+	    }
+		lv_elements_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXClosureRule()); }
+	 iv_ruleXClosure=ruleXClosure 
+	 { $current=$iv_ruleXClosure.current; } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='[' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+    }
+))(((((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
+	    }
+		lv_declaredFormalParameters_2_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_2_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
+	    }
+		lv_declaredFormalParameters_4_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_4_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(
+(
+		lv_explicitSyntax_5_0=	'|' 
+    {
+        newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXClosureRule());
+	        }
+       		setWithLastConsumed($current, "explicitSyntax", true, "|");
+	    }
+
+)
+)))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
+	    }
+		lv_expression_6_0=ruleXExpressionInClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_6_0, 
+        		"XExpressionInClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7=']' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
+	 iv_ruleXExpressionInClosure=ruleXExpressionInClosure 
+	 { $current=$iv_ruleXExpressionInClosure.current; } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+            $current);
+    }
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
+	    }
+		lv_expressions_1_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"expressions",
+        		lv_expressions_1_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+    }
+)?)*)
+;
+
+
+
+
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
+	 iv_ruleXShortClosure=ruleXShortClosure 
+	 { $current=$iv_ruleXShortClosure.current; } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+            $current);
+    }
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
+	    }
+		lv_declaredFormalParameters_1_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_1_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
+	    }
+		lv_declaredFormalParameters_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(
+(
+		lv_explicitSyntax_4_0=	'|' 
+    {
+        newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXShortClosureRule());
+	        }
+       		setWithLastConsumed($current, "explicitSyntax", true, "|");
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
+	 iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression 
+	 { $current=$iv_ruleXParenthesizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+	otherlv_2=')' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXIfExpressionRule()); }
+	 iv_ruleXIfExpression=ruleXIfExpression 
+	 { $current=$iv_ruleXIfExpression.current; } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='if' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_if_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"if",
+        		lv_if_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_then_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"then",
+        		lv_then_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'else' 
+)=>	otherlv_6='else' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
+	    }
+		lv_else_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"else",
+        		lv_else_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSwitchExpressionRule()); }
+	 iv_ruleXSwitchExpression=ruleXSwitchExpression 
+	 { $current=$iv_ruleXSwitchExpression.current; } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='switch' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+    }
+(((((	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
+	    }
+		lv_declaredParam_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
+	    }
+		lv_switch_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"switch",
+        		lv_switch_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+    }
+)
+    |(((((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
+	    }
+		lv_declaredParam_7_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_7_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8=':' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+    }
+))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
+	    }
+		lv_switch_9_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"switch",
+        		lv_switch_9_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
+	    }
+		lv_cases_11_0=ruleXCasePart		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"cases",
+        		lv_cases_11_0, 
+        		"XCasePart");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_12='default' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+    }
+	otherlv_13=':' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
+	    }
+		lv_default_14_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"default",
+        		lv_default_14_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15='}' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCasePartRule()); }
+	 iv_ruleXCasePart=ruleXCasePart 
+	 { $current=$iv_ruleXCasePart.current; } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeGuard_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
+	        }
+       		set(
+       			$current, 
+       			"typeGuard",
+        		lv_typeGuard_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_2='case' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
+	    }
+		lv_case_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
+	        }
+       		set(
+       			$current, 
+       			"case",
+        		lv_case_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?((	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
+	    }
+		lv_then_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
+	        }
+       		set(
+       			$current, 
+       			"then",
+        		lv_then_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+(
+		lv_fallThrough_6_0=	',' 
+    {
+        newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXCasePartRule());
+	        }
+       		setWithLastConsumed($current, "fallThrough", true, ",");
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXForLoopExpressionRule()); }
+	 iv_ruleXForLoopExpression=ruleXForLoopExpression 
+	 { $current=$iv_ruleXForLoopExpression.current; } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='for' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
+	    }
+		lv_declaredParam_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_forExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"forExpression",
+        		lv_forExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_eachExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"eachExpression",
+        		lv_eachExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression 
+	 { $current=$iv_ruleXBasicForLoopExpression.current; } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='for' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
+	    }
+		lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"initExpressions",
+        		lv_initExpressions_3_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
+	    }
+		lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"initExpressions",
+        		lv_initExpressions_5_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_expression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
+	    }
+		lv_updateExpressions_9_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"updateExpressions",
+        		lv_updateExpressions_9_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
+	    }
+		lv_updateExpressions_11_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"updateExpressions",
+        		lv_updateExpressions_11_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_12=')' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
+	    }
+		lv_eachExpression_13_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"eachExpression",
+        		lv_eachExpression_13_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXWhileExpressionRule()); }
+	 iv_ruleXWhileExpression=ruleXWhileExpression 
+	 { $current=$iv_ruleXWhileExpression.current; } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='while' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_predicate_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"predicate",
+        		lv_predicate_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_body_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); }
+	 iv_ruleXDoWhileExpression=ruleXDoWhileExpression 
+	 { $current=$iv_ruleXDoWhileExpression.current; } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='do' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_body_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='while' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+    }
+	otherlv_4='(' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_predicate_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"predicate",
+        		lv_predicate_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXBlockExpressionRule()); }
+	 iv_ruleXBlockExpression=ruleXBlockExpression 
+	 { $current=$iv_ruleXBlockExpression.current; } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
+	    }
+		lv_expressions_2_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"expressions",
+        		lv_expressions_2_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=';' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+    }
+)?)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration 
+	 { $current=$iv_ruleXExpressionOrVarDeclaration.current; } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
+    }
+    this_XVariableDeclaration_0=ruleXVariableDeclaration
+    { 
+        $current = $this_XVariableDeclaration_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXVariableDeclarationRule()); }
+	 iv_ruleXVariableDeclaration=ruleXVariableDeclaration 
+	 { $current=$iv_ruleXVariableDeclaration.current; } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+            $current);
+    }
+)((
+(
+		lv_writeable_1_0=	'var' 
+    {
+        newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "writeable", true, "var");
+	    }
+
+)
+)
+    |	otherlv_2='val' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+    }
+)(((((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))=>((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
+	    }
+		lv_name_4_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
+	    }
+		lv_name_5_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_5_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
+	    }
+		lv_right_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmFormalParameterRule()); }
+	 iv_ruleJvmFormalParameter=ruleJvmFormalParameter 
+	 { $current=$iv_ruleJvmFormalParameter.current; } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+	    }
+		lv_parameterType_0_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"parameterType",
+        		lv_parameterType_0_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); }
+	 iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter 
+	 { $current=$iv_ruleFullJvmFormalParameter.current; } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+	    }
+		lv_parameterType_0_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"parameterType",
+        		lv_parameterType_0_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXFeatureCallRule()); }
+	 iv_ruleXFeatureCall=ruleXFeatureCall 
+	 { $current=$iv_ruleXFeatureCall.current; } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+            $current);
+    }
+)(	otherlv_1='<' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_typeArguments_2_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_2_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+	    }
+		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+    }
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+	    }
+		ruleIdOrSuper		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitOperationCall_7_0=	'(' 
+    {
+        newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
+	    }
+		lv_featureCallArguments_8_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_8_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
+	    }
+		lv_featureCallArguments_9_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_9_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
+	    }
+		lv_featureCallArguments_11_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_11_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_12=')' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
+	    }
+		lv_featureCallArguments_13_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_13_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFeatureCallIDRule()); } 
+	 iv_ruleFeatureCallID=ruleFeatureCallID 
+	 { $current=$iv_ruleFeatureCallID.current.getText(); }  
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
+    }
+    this_ValidID_0=ruleValidID    {
+		$current.merge(this_ValidID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='extends' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
+    }
+
+    |
+	kw='static' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
+    }
+
+    |
+	kw='import' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
+    }
+
+    |
+	kw='extension' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdOrSuperRule()); } 
+	 iv_ruleIdOrSuper=ruleIdOrSuper 
+	 { $current=$iv_ruleIdOrSuper.current.getText(); }  
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
+    }
+    this_FeatureCallID_0=ruleFeatureCallID    {
+		$current.merge(this_FeatureCallID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='super' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXConstructorCallRule()); }
+	 iv_ruleXConstructorCall=ruleXConstructorCall 
+	 { $current=$iv_ruleXConstructorCall.current; } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+            $current);
+    }
+)	otherlv_1='new' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_3='<' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
+	    }
+		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
+	    }
+		lv_typeArguments_6_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_6_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_7='>' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+    }
+)?(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitConstructorCall_8_0=	'(' 
+    {
+        newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitConstructorCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
+	    }
+		lv_arguments_9_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_9_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
+	    }
+		lv_arguments_10_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_10_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=',' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
+	    }
+		lv_arguments_12_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_12_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_13=')' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
+	    }
+		lv_arguments_14_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_14_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXBooleanLiteralRule()); }
+	 iv_ruleXBooleanLiteral=ruleXBooleanLiteral 
+	 { $current=$iv_ruleXBooleanLiteral.current; } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+            $current);
+    }
+)(	otherlv_1='false' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+    }
+
+    |(
+(
+		lv_isTrue_2_0=	'true' 
+    {
+        newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXBooleanLiteralRule());
+	        }
+       		setWithLastConsumed($current, "isTrue", true, "true");
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXNullLiteralRule()); }
+	 iv_ruleXNullLiteral=ruleXNullLiteral 
+	 { $current=$iv_ruleXNullLiteral.current; } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='null' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXNumberLiteralRule()); }
+	 iv_ruleXNumberLiteral=ruleXNumberLiteral 
+	 { $current=$iv_ruleXNumberLiteral.current; } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
+	    }
+		lv_value_1_0=ruleNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"Number");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXStringLiteralRule()); }
+	 iv_ruleXStringLiteral=ruleXStringLiteral 
+	 { $current=$iv_ruleXStringLiteral.current; } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		lv_value_1_0=RULE_STRING
+		{
+			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
+	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
+	 { $current=$iv_ruleXTypeLiteral.current; } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='typeof' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+	    }
+		lv_arrayDimensions_4_0=ruleArrayBrackets		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"arrayDimensions",
+        		lv_arrayDimensions_4_0, 
+        		"ArrayBrackets");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
+	 iv_ruleXThrowExpression=ruleXThrowExpression 
+	 { $current=$iv_ruleXThrowExpression.current; } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='throw' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
+	 iv_ruleXReturnExpression=ruleXReturnExpression 
+	 { $current=$iv_ruleXReturnExpression.current; } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='return' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+    }
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
+	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='try' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((((	'catch' 
+)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+	    }
+		lv_catchClauses_3_0=ruleXCatchClause		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"catchClauses",
+        		lv_catchClauses_3_0, 
+        		"XCatchClause");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+(((	'finally' 
+)=>	otherlv_4='finally' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+	    }
+		lv_finallyExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='finally' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_finallyExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))))
+;
+
+
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
+	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
+	 { $current=$iv_ruleXSynchronizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='synchronized' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_param_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"param",
+        		lv_param_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCatchClauseRule()); }
+	 iv_ruleXCatchClause=ruleXCatchClause 
+	 { $current=$iv_ruleXCatchClause.current; } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((	'catch' 
+)=>	otherlv_0='catch' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
+	    }
+		lv_declaredParam_2_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_2_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
+	    }
+		lv_expression_4_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_4_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); } 
+	 iv_ruleQualifiedName=ruleQualifiedName 
+	 { $current=$iv_ruleQualifiedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
+    }
+    this_ValidID_0=ruleValidID    {
+		$current.merge(this_ValidID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(((
+	'.' 
+)=>
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
+    }
+    this_ValidID_2=ruleValidID    {
+		$current.merge(this_ValidID_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleNumber
+entryRuleNumber returns [String current=null] 
+	@init { 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+	}
+	:
+	{ newCompositeNode(grammarAccess.getNumberRule()); } 
+	 iv_ruleNumber=ruleNumber 
+	 { $current=$iv_ruleNumber.current.getText(); }  
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+    }
+    @after { leaveRule(); }:
+(    this_HEX_0=RULE_HEX    {
+		$current.merge(this_HEX_0);
+    }
+
+    { 
+    newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
+    }
+
+    |((    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
+    }
+
+    |    this_DECIMAL_2=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_2);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
+    }
+)(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+    }
+(    this_INT_4=RULE_INT    {
+		$current.merge(this_INT_4);
+    }
+
+    { 
+    newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
+    }
+
+    |    this_DECIMAL_5=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_5);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
+    }
+))?))
+    ;
+finally {
+	myHiddenTokenState.restore();
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
+	 iv_ruleJvmTypeReference=ruleJvmTypeReference 
+	 { $current=$iv_ruleJvmTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
+    }
+    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+    { 
+        $current = $this_JvmParameterizedTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)	ruleArrayBrackets))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+            $current);
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
+    }
+ruleArrayBrackets
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))*)
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
+    }
+    this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+    { 
+        $current = $this_XFunctionTypeRef_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); } 
+	 iv_ruleArrayBrackets=ruleArrayBrackets 
+	 { $current=$iv_ruleArrayBrackets.current.getText(); }  
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='[' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+    }
+
+	kw=']' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
+	 iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef 
+	 { $current=$iv_ruleXFunctionTypeRef.current; } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
+	    }
+		lv_paramTypes_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_paramTypes_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+    }
+)?	otherlv_5='=>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
+	    }
+		lv_returnType_6_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		set(
+       			$current, 
+       			"returnType",
+        		lv_returnType_6_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference 
+	 { $current=$iv_ruleJvmParameterizedTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_1='<' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_arguments_2_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_2_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+	    }
+		lv_arguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+    }
+(((((
+)	'.' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+            $current);
+    }
+)	otherlv_7='.' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+    }
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_9='<' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
+	    }
+		lv_arguments_10_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_10_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=',' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
+	    }
+		lv_arguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='>' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+    }
+)?)*)?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference 
+	 { $current=$iv_ruleJvmArgumentTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
+    }
+    this_JvmTypeReference_0=ruleJvmTypeReference
+    { 
+        $current = $this_JvmTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
+    }
+    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+    { 
+        $current = $this_JvmWildcardTypeReference_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference 
+	 { $current=$iv_ruleJvmWildcardTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
+	    }
+		lv_constraints_2_0=ruleJvmUpperBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_2_0, 
+        		"JvmUpperBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
+	    }
+		lv_constraints_3_0=ruleJvmUpperBoundAnded		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_3_0, 
+        		"JvmUpperBoundAnded");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
+	    }
+		lv_constraints_4_0=ruleJvmLowerBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_4_0, 
+        		"JvmLowerBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
+	    }
+		lv_constraints_5_0=ruleJvmLowerBoundAnded		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"JvmLowerBoundAnded");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*))?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmUpperBoundRule()); }
+	 iv_ruleJvmUpperBound=ruleJvmUpperBound 
+	 { $current=$iv_ruleJvmUpperBound.current; } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='extends' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded 
+	 { $current=$iv_ruleJvmUpperBoundAnded.current; } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='&' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmLowerBoundRule()); }
+	 iv_ruleJvmLowerBound=ruleJvmLowerBound 
+	 { $current=$iv_ruleJvmLowerBound.current; } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='super' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded 
+	 { $current=$iv_ruleJvmLowerBoundAnded.current; } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='&' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard 
+	 { $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }  
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleValidID
+entryRuleValidID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDRule()); } 
+	 iv_ruleValidID=ruleValidID 
+	 { $current=$iv_ruleValidID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXImportSection
+entryRuleXImportSection returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXImportSectionRule()); }
+	 iv_ruleXImportSection=ruleXImportSection 
+	 { $current=$iv_ruleXImportSection.current; } 
+	 EOF 
+;
+
+// Rule XImportSection
+ruleXImportSection returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
+	    }
+		lv_importDeclarations_0_0=ruleXImportDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXImportSectionRule());
+	        }
+       		add(
+       			$current, 
+       			"importDeclarations",
+        		lv_importDeclarations_0_0, 
+        		"XImportDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
+	 iv_ruleXImportDeclaration=ruleXImportDeclaration 
+	 { $current=$iv_ruleXImportDeclaration.current; } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
+    }
+(((
+(
+		lv_static_1_0=	'static' 
+    {
+        newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "static", true, "static");
+	    }
+
+)
+)(
+(
+		lv_extension_2_0=	'extension' 
+    {
+        newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "extension", true, "extension");
+	    }
+
+)
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0()); 
+	    }
+		ruleQualifiedNameInStaticImport		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_wildcard_4_0=	'*' 
+    {
+        newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "wildcard", true, "*");
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0()); 
+	    }
+		lv_memberName_5_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"memberName",
+        		lv_memberName_5_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0()); 
+	    }
+		lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_7_0, 
+        		"QualifiedNameWithWildcard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport 
+	 { $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }  
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
+    }
+    this_ValidID_0=ruleValidID    {
+		$current.merge(this_ValidID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
+    }
+)+
+    ;
+
+
+
+
+
+RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
+
+RULE_INT : '0'..'9' ('0'..'9'|'_')*;
+
+RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.tokens b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.tokens
new file mode 100644
index 0000000..abc80fd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.tokens
@@ -0,0 +1,191 @@
+'!'=66
+'!='=50
+'!=='=52
+'#'=36
+'%'=65
+'%='=43
+'&&'=48
+'&'=103
+'('=26
+')'=28
+'*'=62
+'**'=63
+'*='=41
+'+'=60
+'++'=68
+'+='=39
+','=27
+'-'=61
+'--'=69
+'-='=40
+'->'=54
+'.'=70
+'..'=56
+'..<'=55
+'/'=64
+'/='=42
+':'=78
+'::'=71
+';'=74
+'<'=44
+'<>'=58
+'='=35
+'=='=49
+'==='=51
+'=>'=57
+'>'=45
+'>='=46
+'?'=102
+'?.'=72
+'?:'=59
+'@'=34
+'['=37
+']'=38
+'as'=67
+'blip-group'=17
+'case'=80
+'catch'=101
+'converter'=19
+'default'=79
+'do'=83
+'else'=76
+'extends'=86
+'extension'=89
+'false'=92
+'finally'=99
+'for'=81
+'function'=25
+'group'=16
+'guard'=32
+'if'=75
+'import'=88
+'instanceof'=53
+'model-datatype'=20
+'new'=91
+'null'=94
+'operation'=33
+'package'=13
+'presentation-datatype'=21
+'rate'=31
+'rating'=24
+'return'=97
+'returns'=29
+'statemachine'=18
+'static'=87
+'super'=90
+'switch'=77
+'synchronized'=100
+'test'=30
+'throw'=96
+'to-model'=22
+'to-presentation'=23
+'true'=93
+'try'=98
+'typeof'=95
+'val'=85
+'var'=84
+'while'=82
+'{'=14
+'|'=73
+'||'=47
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=4
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDslLexer.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDslLexer.java
new file mode 100644
index 0000000..94a94dd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDslLexer.java
@@ -0,0 +1,4217 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalFunctionLibraryDslLexer extends Lexer {
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__63=63;
+    public static final int T__64=64;
+    public static final int T__65=65;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__81=81;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+    public InternalFunctionLibraryDslLexer() {;} 
+    public InternalFunctionLibraryDslLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalFunctionLibraryDslLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:11:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:12:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:13:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:14:7: ( 'group' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:14:9: 'group'
+            {
+            match("group"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:15:7: ( 'blip-group' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:15:9: 'blip-group'
+            {
+            match("blip-group"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:16:7: ( 'statemachine' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:16:9: 'statemachine'
+            {
+            match("statemachine"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:17:7: ( 'converter' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:17:9: 'converter'
+            {
+            match("converter"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:18:7: ( 'model-datatype' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:18:9: 'model-datatype'
+            {
+            match("model-datatype"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:19:7: ( 'presentation-datatype' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:19:9: 'presentation-datatype'
+            {
+            match("presentation-datatype"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:20:7: ( 'to-model' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:20:9: 'to-model'
+            {
+            match("to-model"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:21:7: ( 'to-presentation' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:21:9: 'to-presentation'
+            {
+            match("to-presentation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:22:7: ( 'rating' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:22:9: 'rating'
+            {
+            match("rating"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:23:7: ( 'function' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:23:9: 'function'
+            {
+            match("function"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:24:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:24:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:25:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:25:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:26:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:26:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:27:7: ( 'returns' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:27:9: 'returns'
+            {
+            match("returns"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:28:7: ( 'test' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:28:9: 'test'
+            {
+            match("test"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:29:7: ( 'rate' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:29:9: 'rate'
+            {
+            match("rate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:30:7: ( 'guard' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:30:9: 'guard'
+            {
+            match("guard"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:31:7: ( 'operation' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:31:9: 'operation'
+            {
+            match("operation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:32:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:32:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:33:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:33:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:34:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:34:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:35:7: ( '[' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:35:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:36:7: ( ']' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:36:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:37:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:37:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:38:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:38:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:39:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:39:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:40:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:40:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:41:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:41:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:42:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:42:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:43:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:43:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:44:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:44:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:45:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:45:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:46:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:46:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:47:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:47:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:48:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:48:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:49:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:49:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:50:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:50:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:51:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:51:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:52:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:52:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:53:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:53:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:54:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:54:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:55:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:55:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:56:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:56:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:57:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:57:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:58:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:58:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:59:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:59:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:60:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:60:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:61:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:61:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:62:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:62:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:63:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:63:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:64:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:64:9: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:65:7: ( 'as' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:65:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:66:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:66:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:67:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:67:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:68:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:68:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:69:7: ( '::' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:69:9: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:70:7: ( '?.' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:70:9: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:71:7: ( '|' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:71:9: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:72:7: ( ';' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:72:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:73:7: ( 'if' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:73:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:74:7: ( 'else' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:74:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:75:7: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:75:9: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:76:7: ( ':' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:76:9: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:77:7: ( 'default' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:77:9: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:78:7: ( 'case' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:78:9: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:79:7: ( 'for' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:79:9: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:80:7: ( 'while' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:80:9: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:81:7: ( 'do' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:81:9: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:82:7: ( 'var' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:82:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:83:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:83:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:84:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:84:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:85:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:85:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:86:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:86:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:87:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:87:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:88:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:88:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:89:7: ( 'new' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:89:9: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:90:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:90:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:91:7: ( 'true' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:91:9: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:92:7: ( 'null' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:92:9: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:93:7: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:93:9: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:94:7: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:94:9: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:95:7: ( 'return' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:95:9: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:96:7: ( 'try' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:96:9: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:97:7: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:97:9: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:98:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:98:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:99:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:99:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:100:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:100:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__102"
+
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:101:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:101:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:12: ( '0x' | '0X' )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='0') ) {
+                int LA1_1 = input.LA(2);
+
+                if ( (LA1_1=='x') ) {
+                    alt1=1;
+                }
+                else if ( (LA1_1=='X') ) {
+                    alt1=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 1, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0=='#') ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0=='B'||LA3_0=='b') ) {
+                        alt3=1;
+                    }
+                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
+                        alt3=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 3, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            {
+                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8012:84: ( 'l' | 'L' )
+                            {
+                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_HEX"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8014:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8014:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8014:21: ( '0' .. '9' | '_' )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')||LA5_0=='_') ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_DECIMAL"
+    public final void mRULE_DECIMAL() throws RecognitionException {
+        try {
+            int _type = RULE_DECIMAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='E'||LA7_0=='e') ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    {
+                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:
+                            {
+                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+                    mRULE_INT(); 
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            int alt8=3;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0=='B'||LA8_0=='b') ) {
+                alt8=1;
+            }
+            else if ( (LA8_0=='D'||LA8_0=='F'||LA8_0=='L'||LA8_0=='d'||LA8_0=='f'||LA8_0=='l') ) {
+                alt8=2;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    {
+                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8016:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    {
+                    if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_DECIMAL"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8018:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8018:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8018:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8018:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8018:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='\"') ) {
+                alt15=1;
+            }
+            else if ( (LA15_0=='\'') ) {
+                alt15=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop11:
+                    do {
+                        int alt11=3;
+                        int LA11_0 = input.LA(1);
+
+                        if ( (LA11_0=='\\') ) {
+                            alt11=1;
+                        }
+                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
+                            alt11=2;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop13:
+                    do {
+                        int alt13=3;
+                        int LA13_0 = input.LA(1);
+
+                        if ( (LA13_0=='\\') ) {
+                            alt13=1;
+                        }
+                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+                            alt13=2;
+                        }
+
+
+                        switch (alt13) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop13;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8020:79: '\\''
+                            {
+                            match('\''); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8022:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8022:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8022:24: ( options {greedy=false; } : . )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( (LA16_0=='*') ) {
+                    int LA16_1 = input.LA(2);
+
+                    if ( (LA16_1=='/') ) {
+                        alt16=2;
+                    }
+                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
+                        alt16=1;
+                    }
+
+
+                }
+                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8022:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:40: ( ( '\\r' )? '\\n' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8024:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8026:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8026:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8026:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt20=0;
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt20 >= 1 ) break loop20;
+                        EarlyExitException eee =
+                            new EarlyExitException(20, input);
+                        throw eee;
+                }
+                cnt20++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8028:16: ( . )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:8028:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=100;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:560: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:569: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:578: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:591: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:599: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:611: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:627: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:643: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1:651: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\64\2\uffff\10\64\3\uffff\1\64\1\uffff\1\123\3\uffff"+
+        "\1\131\1\135\1\140\1\144\1\146\1\150\1\152\1\154\1\156\1\160\1\64"+
+        "\1\165\1\170\1\64\1\173\1\uffff\5\64\2\u0087\1\61\5\uffff\2\64\3"+
+        "\uffff\25\64\3\uffff\1\64\1\uffff\1\u00a6\35\uffff\1\u00a8\1\uffff"+
+        "\1\64\1\u00aa\1\64\1\u00ad\4\uffff\1\u00ae\3\uffff\3\64\1\u00b2"+
+        "\4\64\1\uffff\1\u0087\4\uffff\15\64\1\uffff\2\64\1\u00c9\5\64\1"+
+        "\u00d0\3\64\4\uffff\1\64\1\uffff\1\64\3\uffff\3\64\1\uffff\1\64"+
+        "\1\u00da\1\u00db\1\u00dc\13\64\1\u00e9\2\64\2\uffff\1\u00ec\1\u00ed"+
+        "\1\uffff\3\64\1\u00f1\2\64\1\uffff\5\64\1\u00f9\3\64\3\uffff\1\u00fd"+
+        "\2\64\1\u0100\1\u0101\1\uffff\3\64\1\u0105\2\64\1\uffff\1\u0108"+
+        "\1\64\2\uffff\1\64\1\u010b\1\64\1\uffff\2\64\1\u010f\4\64\1\uffff"+
+        "\2\64\1\u0117\1\uffff\2\64\2\uffff\1\64\1\u011b\1\u011c\1\uffff"+
+        "\2\64\2\uffff\1\u011f\1\uffff\1\u0120\1\u0122\1\64\1\uffff\3\64"+
+        "\1\u0127\3\64\1\uffff\1\u012b\2\64\2\uffff\2\64\2\uffff\1\u0130"+
+        "\1\uffff\1\64\1\u0132\2\64\1\uffff\1\u0135\1\64\1\u0137\1\uffff"+
+        "\4\64\1\uffff\1\u013c\1\uffff\2\64\1\uffff\1\64\1\uffff\3\64\1\u0143"+
+        "\1\uffff\1\u0144\1\64\1\u0146\3\64\2\uffff\1\u014a\1\uffff\3\64"+
+        "\1\uffff\1\64\1\u014f\1\u0150\3\uffff";
+    static final String DFA21_eofS =
+        "\u0151\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\1\162\1\154\1\164\1\141\1\157\1\145\2\141\3"+
+        "\uffff\1\160\1\uffff\1\75\3\uffff\1\53\1\55\2\52\1\75\1\76\1\75"+
+        "\1\174\1\46\1\75\1\146\2\56\1\163\1\72\1\uffff\1\154\1\145\1\150"+
+        "\1\141\1\145\2\60\1\44\5\uffff\1\143\1\145\3\uffff\1\157\1\141\1"+
+        "\151\1\141\1\151\1\160\2\156\1\163\1\144\1\55\1\163\1\165\1\160"+
+        "\1\162\2\164\1\156\1\162\1\154\1\156\3\uffff\1\145\1\uffff\1\75"+
+        "\35\uffff\1\75\1\uffff\1\163\1\44\1\160\1\74\4\uffff\1\44\3\uffff"+
+        "\1\163\1\164\1\146\1\44\1\151\1\154\1\167\1\154\1\uffff\1\60\4\uffff"+
+        "\1\153\1\163\1\165\1\162\1\160\2\164\1\145\1\143\1\166\1\145\1\143"+
+        "\1\145\1\155\1\164\1\145\1\44\1\145\1\157\1\145\1\165\1\143\1\44"+
+        "\1\163\1\141\1\162\4\uffff\1\164\1\uffff\1\157\3\uffff\2\145\1\141"+
+        "\1\uffff\1\154\3\44\1\154\1\141\1\145\1\160\1\144\1\55\1\145\1\143"+
+        "\1\162\1\150\1\145\1\44\1\150\1\154\2\uffff\2\44\1\uffff\1\157\1"+
+        "\167\1\156\1\44\1\162\1\164\1\uffff\1\145\1\154\2\141\1\162\1\44"+
+        "\1\156\1\165\1\145\3\uffff\1\44\1\147\1\156\2\44\1\uffff\1\155\1"+
+        "\143\1\150\1\44\2\162\1\uffff\1\44\1\55\2\uffff\1\146\1\44\1\147"+
+        "\1\uffff\1\156\1\151\1\44\1\154\1\164\1\156\1\164\1\uffff\1\144"+
+        "\1\154\1\44\1\uffff\1\145\1\164\2\uffff\1\141\2\44\1\uffff\1\157"+
+        "\1\164\2\uffff\1\44\1\uffff\2\44\1\157\1\uffff\1\171\1\151\1\143"+
+        "\1\44\1\163\1\151\1\164\1\uffff\1\44\1\141\1\143\2\uffff\1\156\1"+
+        "\145\2\uffff\1\44\1\uffff\1\156\1\44\1\157\1\145\1\uffff\1\44\1"+
+        "\157\1\44\1\uffff\1\164\1\150\1\151\1\162\1\uffff\1\44\1\uffff\1"+
+        "\156\1\157\1\uffff\1\156\1\uffff\2\151\1\172\1\44\1\uffff\1\44\1"+
+        "\146\1\44\1\157\1\156\1\145\2\uffff\1\44\1\uffff\1\156\1\145\1\144"+
+        "\1\uffff\1\55\2\44\3\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\162\2\uffff\1\165\1\154\1\171\2\157\1\171\1\145\1\165"+
+        "\3\uffff\1\160\1\uffff\1\76\3\uffff\1\75\1\76\3\75\1\76\1\75\1\174"+
+        "\1\46\1\75\1\156\1\56\1\72\1\163\1\72\1\uffff\1\170\1\157\1\150"+
+        "\1\141\1\165\1\170\1\154\1\172\5\uffff\1\143\1\145\3\uffff\1\157"+
+        "\1\141\1\151\1\141\1\151\1\160\2\156\1\164\1\144\1\55\1\163\1\171"+
+        "\1\160\1\162\2\164\1\156\1\162\1\154\1\156\3\uffff\1\145\1\uffff"+
+        "\1\75\35\uffff\1\75\1\uffff\1\163\1\172\1\160\1\74\4\uffff\1\172"+
+        "\3\uffff\1\163\1\164\1\146\1\172\1\151\1\162\1\167\1\154\1\uffff"+
+        "\1\154\4\uffff\1\153\1\163\1\165\1\162\1\160\2\164\1\145\1\143\1"+
+        "\166\1\145\1\143\1\145\1\160\1\164\1\145\1\172\1\145\1\157\1\151"+
+        "\1\165\1\143\1\172\1\163\1\141\1\162\4\uffff\1\164\1\uffff\1\157"+
+        "\3\uffff\2\145\1\141\1\uffff\1\154\3\172\1\154\1\141\1\145\1\160"+
+        "\1\144\1\55\1\151\1\143\1\162\1\150\1\145\1\172\1\150\1\154\2\uffff"+
+        "\2\172\1\uffff\1\157\1\167\1\156\1\172\1\162\1\164\1\uffff\1\145"+
+        "\1\154\2\141\1\162\1\172\1\156\1\165\1\145\3\uffff\1\172\1\147\1"+
+        "\156\2\172\1\uffff\1\155\1\143\1\150\1\172\2\162\1\uffff\1\172\1"+
+        "\55\2\uffff\1\146\1\172\1\147\1\uffff\1\156\1\151\1\172\1\154\1"+
+        "\164\1\156\1\164\1\uffff\1\163\1\154\1\172\1\uffff\1\145\1\164\2"+
+        "\uffff\1\141\2\172\1\uffff\1\157\1\164\2\uffff\1\172\1\uffff\2\172"+
+        "\1\157\1\uffff\1\171\1\151\1\143\1\172\1\163\1\151\1\164\1\uffff"+
+        "\1\172\1\141\1\143\2\uffff\1\156\1\145\2\uffff\1\172\1\uffff\1\156"+
+        "\1\172\1\157\1\145\1\uffff\1\172\1\157\1\172\1\uffff\1\164\1\150"+
+        "\1\151\1\162\1\uffff\1\172\1\uffff\1\156\1\157\1\uffff\1\156\1\uffff"+
+        "\2\151\2\172\1\uffff\1\172\1\146\1\172\1\157\1\156\1\145\2\uffff"+
+        "\1\172\1\uffff\1\156\1\145\1\144\1\uffff\1\55\2\172\3\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\10\uffff\1\16\1\17\1\20\1\uffff\1\26\1\uffff\1"+
+        "\30\1\31\1\32\17\uffff\1\76\10\uffff\1\137\2\140\1\143\1\144\2\uffff"+
+        "\1\137\1\2\1\3\25\uffff\1\16\1\17\1\20\1\uffff\1\26\1\uffff\1\55"+
+        "\1\27\1\30\1\31\1\32\1\33\1\70\1\60\1\34\1\52\1\71\1\61\1\35\1\63"+
+        "\1\62\1\36\1\141\1\142\1\64\1\37\1\65\1\56\1\40\1\42\1\41\1\43\1"+
+        "\75\1\44\1\133\1\uffff\1\66\4\uffff\1\72\1\57\1\74\1\132\1\uffff"+
+        "\1\73\1\102\1\76\10\uffff\1\134\1\uffff\1\135\1\136\1\140\1\143"+
+        "\32\uffff\1\47\1\45\1\50\1\46\1\uffff\1\77\1\uffff\1\53\1\54\1\67"+
+        "\3\uffff\1\107\22\uffff\1\12\1\13\2\uffff\1\126\6\uffff\1\105\11"+
+        "\uffff\1\110\1\111\1\117\5\uffff\1\5\6\uffff\1\104\2\uffff\1\22"+
+        "\1\121\3\uffff\1\23\7\uffff\1\100\3\uffff\1\122\2\uffff\1\4\1\24"+
+        "\3\uffff\1\116\2\uffff\1\131\1\10\1\uffff\1\124\3\uffff\1\120\7"+
+        "\uffff\1\106\3\uffff\1\113\1\101\2\uffff\1\123\1\14\1\uffff\1\125"+
+        "\4\uffff\1\114\3\uffff\1\1\4\uffff\1\21\1\uffff\1\127\2\uffff\1"+
+        "\112\1\uffff\1\103\4\uffff\1\15\6\uffff\1\7\1\25\1\uffff\1\115\3"+
+        "\uffff\1\51\3\uffff\1\11\1\6\1\130";
+    static final String DFA21_specialS =
+        "\1\0\u0150\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\61\2\60\2\61\1\60\22\61\1\60\1\36\1\56\1\22\1\55\1\31\1"+
+            "\35\1\57\1\14\1\16\1\27\1\25\1\15\1\26\1\40\1\30\1\52\11\53"+
+            "\1\43\1\44\1\32\1\21\1\33\1\41\1\20\32\55\1\23\1\61\1\24\1\54"+
+            "\1\55\1\61\1\42\1\5\1\7\1\46\1\45\1\13\1\4\1\55\1\37\3\55\1"+
+            "\10\1\51\1\17\1\1\1\55\1\12\1\6\1\11\1\55\1\50\1\47\3\55\1\2"+
+            "\1\34\1\3\uff82\61",
+            "\1\62\20\uffff\1\63",
+            "",
+            "",
+            "\1\67\2\uffff\1\70",
+            "\1\71",
+            "\1\72\1\74\1\uffff\1\73\1\uffff\1\75",
+            "\1\77\15\uffff\1\76",
+            "\1\100",
+            "\1\102\2\uffff\1\105\6\uffff\1\101\2\uffff\1\103\6\uffff\1"+
+            "\104",
+            "\1\106\3\uffff\1\107",
+            "\1\112\7\uffff\1\113\5\uffff\1\111\5\uffff\1\110",
+            "",
+            "",
+            "",
+            "\1\117",
+            "",
+            "\1\121\1\122",
+            "",
+            "",
+            "",
+            "\1\130\21\uffff\1\127",
+            "\1\134\17\uffff\1\132\1\133",
+            "\1\137\22\uffff\1\136",
+            "\1\142\4\uffff\1\143\15\uffff\1\141",
+            "\1\145",
+            "\1\147",
+            "\1\151",
+            "\1\153",
+            "\1\155",
+            "\1\157",
+            "\1\162\6\uffff\1\163\1\161",
+            "\1\164",
+            "\1\167\13\uffff\1\166",
+            "\1\171",
+            "\1\172",
+            "",
+            "\1\175\13\uffff\1\176",
+            "\1\177\11\uffff\1\u0080",
+            "\1\u0081",
+            "\1\u0082",
+            "\1\u0083\17\uffff\1\u0084",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088"+
+            "\13\uffff\1\u0085\6\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3"+
+            "\u0088\5\uffff\1\u0088\13\uffff\1\u0085",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088"+
+            "\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1"+
+            "\u0088",
+            "\1\64\34\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u008b",
+            "\1\u008c",
+            "",
+            "",
+            "",
+            "\1\u008d",
+            "\1\u008e",
+            "\1\u008f",
+            "\1\u0090",
+            "\1\u0091",
+            "\1\u0092",
+            "\1\u0093",
+            "\1\u0094",
+            "\1\u0095\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\1\u0099",
+            "\1\u009a\3\uffff\1\u009b",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "\1\u009f",
+            "\1\u00a0",
+            "\1\u00a1",
+            "\1\u00a2",
+            "\1\u00a3",
+            "",
+            "",
+            "",
+            "\1\u00a4",
+            "",
+            "\1\u00a5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a7",
+            "",
+            "\1\u00a9",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00ab",
+            "\1\u00ac",
+            "",
+            "",
+            "",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "",
+            "",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00b3",
+            "\1\u00b5\5\uffff\1\u00b4",
+            "\1\u00b6",
+            "\1\u00b7",
+            "",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088"+
+            "\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1"+
+            "\u0088",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5\2\uffff\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cd\3\uffff\1\u00cc",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d4",
+            "",
+            "\1\u00d5",
+            "",
+            "",
+            "",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "",
+            "\1\u00d9",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3\3\uffff\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00ea",
+            "\1\u00eb",
+            "",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00f2",
+            "\1\u00f3",
+            "",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "",
+            "",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0106",
+            "\1\u0107",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0109",
+            "",
+            "",
+            "\1\u010a",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u010c",
+            "",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "",
+            "\1\u0114\16\uffff\1\u0115",
+            "\1\u0116",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u0118",
+            "\1\u0119",
+            "",
+            "",
+            "\1\u011a",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u011d",
+            "\1\u011e",
+            "",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\22"+
+            "\64\1\u0121\7\64",
+            "\1\u0123",
+            "",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u012c",
+            "\1\u012d",
+            "",
+            "",
+            "\1\u012e",
+            "\1\u012f",
+            "",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u0131",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0133",
+            "\1\u0134",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0136",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u013d",
+            "\1\u013e",
+            "",
+            "\1\u013f",
+            "",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0145",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "",
+            "",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "",
+            "\1\u014e",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32"+
+            "\64",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='p') ) {s = 1;}
+
+                        else if ( (LA21_0=='{') ) {s = 2;}
+
+                        else if ( (LA21_0=='}') ) {s = 3;}
+
+                        else if ( (LA21_0=='g') ) {s = 4;}
+
+                        else if ( (LA21_0=='b') ) {s = 5;}
+
+                        else if ( (LA21_0=='s') ) {s = 6;}
+
+                        else if ( (LA21_0=='c') ) {s = 7;}
+
+                        else if ( (LA21_0=='m') ) {s = 8;}
+
+                        else if ( (LA21_0=='t') ) {s = 9;}
+
+                        else if ( (LA21_0=='r') ) {s = 10;}
+
+                        else if ( (LA21_0=='f') ) {s = 11;}
+
+                        else if ( (LA21_0=='(') ) {s = 12;}
+
+                        else if ( (LA21_0==',') ) {s = 13;}
+
+                        else if ( (LA21_0==')') ) {s = 14;}
+
+                        else if ( (LA21_0=='o') ) {s = 15;}
+
+                        else if ( (LA21_0=='@') ) {s = 16;}
+
+                        else if ( (LA21_0=='=') ) {s = 17;}
+
+                        else if ( (LA21_0=='#') ) {s = 18;}
+
+                        else if ( (LA21_0=='[') ) {s = 19;}
+
+                        else if ( (LA21_0==']') ) {s = 20;}
+
+                        else if ( (LA21_0=='+') ) {s = 21;}
+
+                        else if ( (LA21_0=='-') ) {s = 22;}
+
+                        else if ( (LA21_0=='*') ) {s = 23;}
+
+                        else if ( (LA21_0=='/') ) {s = 24;}
+
+                        else if ( (LA21_0=='%') ) {s = 25;}
+
+                        else if ( (LA21_0=='<') ) {s = 26;}
+
+                        else if ( (LA21_0=='>') ) {s = 27;}
+
+                        else if ( (LA21_0=='|') ) {s = 28;}
+
+                        else if ( (LA21_0=='&') ) {s = 29;}
+
+                        else if ( (LA21_0=='!') ) {s = 30;}
+
+                        else if ( (LA21_0=='i') ) {s = 31;}
+
+                        else if ( (LA21_0=='.') ) {s = 32;}
+
+                        else if ( (LA21_0=='?') ) {s = 33;}
+
+                        else if ( (LA21_0=='a') ) {s = 34;}
+
+                        else if ( (LA21_0==':') ) {s = 35;}
+
+                        else if ( (LA21_0==';') ) {s = 36;}
+
+                        else if ( (LA21_0=='e') ) {s = 37;}
+
+                        else if ( (LA21_0=='d') ) {s = 38;}
+
+                        else if ( (LA21_0=='w') ) {s = 39;}
+
+                        else if ( (LA21_0=='v') ) {s = 40;}
+
+                        else if ( (LA21_0=='n') ) {s = 41;}
+
+                        else if ( (LA21_0=='0') ) {s = 42;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 43;}
+
+                        else if ( (LA21_0=='^') ) {s = 44;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='h'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 45;}
+
+                        else if ( (LA21_0=='\"') ) {s = 46;}
+
+                        else if ( (LA21_0=='\'') ) {s = 47;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 48;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 49;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDslParser.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDslParser.java
new file mode 100644
index 0000000..6ac9e03
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDslParser.java
@@ -0,0 +1,10015 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+@SuppressWarnings("all")
+public class InternalFunctionLibraryDslParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'group'", "'blip-group'", "'statemachine'", "'converter'", "'model-datatype'", "'presentation-datatype'", "'to-model'", "'to-presentation'", "'rating'", "'function'", "'('", "','", "')'", "'returns'", "'test'", "'rate'", "'guard'", "'operation'", "'@'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'"
+    };
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__63=63;
+    public static final int T__64=64;
+    public static final int T__65=65;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__81=81;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+
+        public InternalFunctionLibraryDslParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalFunctionLibraryDslParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalFunctionLibraryDslParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g"; }
+
+
+
+     	private FunctionLibraryDslGrammarAccess grammarAccess;
+     	
+        public InternalFunctionLibraryDslParser(TokenStream input, FunctionLibraryDslGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "FunctionLibraryModel";	
+       	}
+       	
+       	@Override
+       	protected FunctionLibraryDslGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleFunctionLibraryModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:67:1: entryRuleFunctionLibraryModel returns [EObject current=null] : iv_ruleFunctionLibraryModel= ruleFunctionLibraryModel EOF ;
+    public final EObject entryRuleFunctionLibraryModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:68:2: (iv_ruleFunctionLibraryModel= ruleFunctionLibraryModel EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:69:2: iv_ruleFunctionLibraryModel= ruleFunctionLibraryModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryModel_in_entryRuleFunctionLibraryModel75);
+            iv_ruleFunctionLibraryModel=ruleFunctionLibraryModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryModel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryModel"
+
+
+    // $ANTLR start "ruleFunctionLibraryModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:76:1: ruleFunctionLibraryModel returns [EObject current=null] : ( (lv_pckg_0_0= ruleFunctionLibraryPackage ) ) ;
+    public final EObject ruleFunctionLibraryModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_pckg_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:79:28: ( ( (lv_pckg_0_0= ruleFunctionLibraryPackage ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:80:1: ( (lv_pckg_0_0= ruleFunctionLibraryPackage ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:80:1: ( (lv_pckg_0_0= ruleFunctionLibraryPackage ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:81:1: (lv_pckg_0_0= ruleFunctionLibraryPackage )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:81:1: (lv_pckg_0_0= ruleFunctionLibraryPackage )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:82:3: lv_pckg_0_0= ruleFunctionLibraryPackage
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryModelAccess().getPckgFunctionLibraryPackageParserRuleCall_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryPackage_in_ruleFunctionLibraryModel130);
+            lv_pckg_0_0=ruleFunctionLibraryPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryModelRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"pckg",
+                      		lv_pckg_0_0, 
+                      		"FunctionLibraryPackage");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryModel"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryPackage"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:106:1: entryRuleFunctionLibraryPackage returns [EObject current=null] : iv_ruleFunctionLibraryPackage= ruleFunctionLibraryPackage EOF ;
+    public final EObject entryRuleFunctionLibraryPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:107:2: (iv_ruleFunctionLibraryPackage= ruleFunctionLibraryPackage EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:108:2: iv_ruleFunctionLibraryPackage= ruleFunctionLibraryPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryPackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryPackage_in_entryRuleFunctionLibraryPackage165);
+            iv_ruleFunctionLibraryPackage=ruleFunctionLibraryPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryPackage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryPackage175); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryPackage"
+
+
+    // $ANTLR start "ruleFunctionLibraryPackage"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:115:1: ruleFunctionLibraryPackage returns [EObject current=null] : ( () ( (lv_importSection_1_0= ruleXImportSection ) )? otherlv_2= 'package' ( (lv_name_3_0= ruleQualifiedName ) ) otherlv_4= '{' ( ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) ) | ( (lv_ratings_6_0= ruleFunctionLibraryRating ) ) )* otherlv_7= '}' ) ;
+    public final EObject ruleFunctionLibraryPackage() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_7=null;
+        EObject lv_importSection_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_3_0 = null;
+
+        EObject lv_groups_5_1 = null;
+
+        EObject lv_groups_5_2 = null;
+
+        EObject lv_groups_5_3 = null;
+
+        EObject lv_groups_5_4 = null;
+
+        EObject lv_ratings_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:118:28: ( ( () ( (lv_importSection_1_0= ruleXImportSection ) )? otherlv_2= 'package' ( (lv_name_3_0= ruleQualifiedName ) ) otherlv_4= '{' ( ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) ) | ( (lv_ratings_6_0= ruleFunctionLibraryRating ) ) )* otherlv_7= '}' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:119:1: ( () ( (lv_importSection_1_0= ruleXImportSection ) )? otherlv_2= 'package' ( (lv_name_3_0= ruleQualifiedName ) ) otherlv_4= '{' ( ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) ) | ( (lv_ratings_6_0= ruleFunctionLibraryRating ) ) )* otherlv_7= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:119:1: ( () ( (lv_importSection_1_0= ruleXImportSection ) )? otherlv_2= 'package' ( (lv_name_3_0= ruleQualifiedName ) ) otherlv_4= '{' ( ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) ) | ( (lv_ratings_6_0= ruleFunctionLibraryRating ) ) )* otherlv_7= '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:119:2: () ( (lv_importSection_1_0= ruleXImportSection ) )? otherlv_2= 'package' ( (lv_name_3_0= ruleQualifiedName ) ) otherlv_4= '{' ( ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) ) | ( (lv_ratings_6_0= ruleFunctionLibraryRating ) ) )* otherlv_7= '}'
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:119:2: ()
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:120:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getFunctionLibraryPackageAccess().getFunctionLibraryPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:125:2: ( (lv_importSection_1_0= ruleXImportSection ) )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==88) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:126:1: (lv_importSection_1_0= ruleXImportSection )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:126:1: (lv_importSection_1_0= ruleXImportSection )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:127:3: lv_importSection_1_0= ruleXImportSection
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getImportSectionXImportSectionParserRuleCall_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleXImportSection_in_ruleFunctionLibraryPackage230);
+                    lv_importSection_1_0=ruleXImportSection();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"importSection",
+                              		lv_importSection_1_0, 
+                              		"XImportSection");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_2=(Token)match(input,13,FOLLOW_13_in_ruleFunctionLibraryPackage243); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryPackageAccess().getPackageKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:147:1: ( (lv_name_3_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:148:1: (lv_name_3_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:148:1: (lv_name_3_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:149:3: lv_name_3_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getNameQualifiedNameParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleFunctionLibraryPackage264);
+            lv_name_3_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_3_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleFunctionLibraryPackage276); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryPackageAccess().getLeftCurlyBracketKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:169:1: ( ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) ) | ( (lv_ratings_6_0= ruleFunctionLibraryRating ) ) )*
+            loop3:
+            do {
+                int alt3=3;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>=16 && LA3_0<=19)) ) {
+                    alt3=1;
+                }
+                else if ( (LA3_0==24) ) {
+                    alt3=2;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:169:2: ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:169:2: ( ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:170:1: ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:170:1: ( (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:171:1: (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:171:1: (lv_groups_5_1= ruleFunctionLibraryGroup | lv_groups_5_2= ruleFunctionLibraryBlipGroup | lv_groups_5_3= ruleFunctionLibraryConverterGroup | lv_groups_5_4= ruleFunctionLibraryStatemachineGroup )
+            	    int alt2=4;
+            	    switch ( input.LA(1) ) {
+            	    case 16:
+            	        {
+            	        alt2=1;
+            	        }
+            	        break;
+            	    case 17:
+            	        {
+            	        alt2=2;
+            	        }
+            	        break;
+            	    case 19:
+            	        {
+            	        alt2=3;
+            	        }
+            	        break;
+            	    case 18:
+            	        {
+            	        alt2=4;
+            	        }
+            	        break;
+            	    default:
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 2, 0, input);
+
+            	        throw nvae;
+            	    }
+
+            	    switch (alt2) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:172:3: lv_groups_5_1= ruleFunctionLibraryGroup
+            	            {
+            	            if ( state.backtracking==0 ) {
+            	               
+            	              	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0()); 
+            	              	    
+            	            }
+            	            pushFollow(FOLLOW_ruleFunctionLibraryGroup_in_ruleFunctionLibraryPackage300);
+            	            lv_groups_5_1=ruleFunctionLibraryGroup();
+
+            	            state._fsp--;
+            	            if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+            	              	        }
+            	                     		add(
+            	                     			current, 
+            	                     			"groups",
+            	                      		lv_groups_5_1, 
+            	                      		"FunctionLibraryGroup");
+            	              	        afterParserOrEnumRuleCall();
+            	              	    
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:187:8: lv_groups_5_2= ruleFunctionLibraryBlipGroup
+            	            {
+            	            if ( state.backtracking==0 ) {
+            	               
+            	              	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1()); 
+            	              	    
+            	            }
+            	            pushFollow(FOLLOW_ruleFunctionLibraryBlipGroup_in_ruleFunctionLibraryPackage319);
+            	            lv_groups_5_2=ruleFunctionLibraryBlipGroup();
+
+            	            state._fsp--;
+            	            if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+            	              	        }
+            	                     		add(
+            	                     			current, 
+            	                     			"groups",
+            	                      		lv_groups_5_2, 
+            	                      		"FunctionLibraryBlipGroup");
+            	              	        afterParserOrEnumRuleCall();
+            	              	    
+            	            }
+
+            	            }
+            	            break;
+            	        case 3 :
+            	            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:202:8: lv_groups_5_3= ruleFunctionLibraryConverterGroup
+            	            {
+            	            if ( state.backtracking==0 ) {
+            	               
+            	              	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2()); 
+            	              	    
+            	            }
+            	            pushFollow(FOLLOW_ruleFunctionLibraryConverterGroup_in_ruleFunctionLibraryPackage338);
+            	            lv_groups_5_3=ruleFunctionLibraryConverterGroup();
+
+            	            state._fsp--;
+            	            if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+            	              	        }
+            	                     		add(
+            	                     			current, 
+            	                     			"groups",
+            	                      		lv_groups_5_3, 
+            	                      		"FunctionLibraryConverterGroup");
+            	              	        afterParserOrEnumRuleCall();
+            	              	    
+            	            }
+
+            	            }
+            	            break;
+            	        case 4 :
+            	            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:217:8: lv_groups_5_4= ruleFunctionLibraryStatemachineGroup
+            	            {
+            	            if ( state.backtracking==0 ) {
+            	               
+            	              	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3()); 
+            	              	    
+            	            }
+            	            pushFollow(FOLLOW_ruleFunctionLibraryStatemachineGroup_in_ruleFunctionLibraryPackage357);
+            	            lv_groups_5_4=ruleFunctionLibraryStatemachineGroup();
+
+            	            state._fsp--;
+            	            if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+            	              	        }
+            	                     		add(
+            	                     			current, 
+            	                     			"groups",
+            	                      		lv_groups_5_4, 
+            	                      		"FunctionLibraryStatemachineGroup");
+            	              	        afterParserOrEnumRuleCall();
+            	              	    
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:236:6: ( (lv_ratings_6_0= ruleFunctionLibraryRating ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:236:6: ( (lv_ratings_6_0= ruleFunctionLibraryRating ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:237:1: (lv_ratings_6_0= ruleFunctionLibraryRating )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:237:1: (lv_ratings_6_0= ruleFunctionLibraryRating )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:238:3: lv_ratings_6_0= ruleFunctionLibraryRating
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryPackageAccess().getRatingsFunctionLibraryRatingParserRuleCall_5_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryRating_in_ruleFunctionLibraryPackage387);
+            	    lv_ratings_6_0=ruleFunctionLibraryRating();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryPackageRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"ratings",
+            	              		lv_ratings_6_0, 
+            	              		"FunctionLibraryRating");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+            otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleFunctionLibraryPackage401); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getFunctionLibraryPackageAccess().getRightCurlyBracketKeyword_6());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryPackage"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:266:1: entryRuleFunctionLibraryGroup returns [EObject current=null] : iv_ruleFunctionLibraryGroup= ruleFunctionLibraryGroup EOF ;
+    public final EObject entryRuleFunctionLibraryGroup() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryGroup = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:267:2: (iv_ruleFunctionLibraryGroup= ruleFunctionLibraryGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:268:2: iv_ruleFunctionLibraryGroup= ruleFunctionLibraryGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryGroup_in_entryRuleFunctionLibraryGroup437);
+            iv_ruleFunctionLibraryGroup=ruleFunctionLibraryGroup();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryGroup; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryGroup447); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:275:1: ruleFunctionLibraryGroup returns [EObject current=null] : (otherlv_0= 'group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleFunctionLibraryGroup() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_functions_3_0 = null;
+
+        EObject lv_tests_4_0 = null;
+
+        EObject lv_rates_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:278:28: ( (otherlv_0= 'group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:279:1: (otherlv_0= 'group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:279:1: (otherlv_0= 'group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:279:3: otherlv_0= 'group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleFunctionLibraryGroup484); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryGroupAccess().getGroupKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:283:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:284:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:284:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:285:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryGroup505);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleFunctionLibraryGroup517); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryGroupAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:305:1: ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )*
+            loop4:
+            do {
+                int alt4=4;
+                switch ( input.LA(1) ) {
+                case 25:
+                    {
+                    alt4=1;
+                    }
+                    break;
+                case 30:
+                    {
+                    alt4=2;
+                    }
+                    break;
+                case 31:
+                    {
+                    alt4=3;
+                    }
+                    break;
+
+                }
+
+                switch (alt4) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:305:2: ( (lv_functions_3_0= ruleFunctionLibraryFunction ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:305:2: ( (lv_functions_3_0= ruleFunctionLibraryFunction ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:306:1: (lv_functions_3_0= ruleFunctionLibraryFunction )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:306:1: (lv_functions_3_0= ruleFunctionLibraryFunction )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:307:3: lv_functions_3_0= ruleFunctionLibraryFunction
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryFunction_in_ruleFunctionLibraryGroup539);
+            	    lv_functions_3_0=ruleFunctionLibraryFunction();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"functions",
+            	              		lv_functions_3_0, 
+            	              		"FunctionLibraryFunction");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:324:6: ( (lv_tests_4_0= ruleFunctionLibraryTest ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:324:6: ( (lv_tests_4_0= ruleFunctionLibraryTest ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:325:1: (lv_tests_4_0= ruleFunctionLibraryTest )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:325:1: (lv_tests_4_0= ruleFunctionLibraryTest )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:326:3: lv_tests_4_0= ruleFunctionLibraryTest
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getTestsFunctionLibraryTestParserRuleCall_3_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryTest_in_ruleFunctionLibraryGroup566);
+            	    lv_tests_4_0=ruleFunctionLibraryTest();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"tests",
+            	              		lv_tests_4_0, 
+            	              		"FunctionLibraryTest");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:343:6: ( (lv_rates_5_0= ruleFunctionLibraryRate ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:343:6: ( (lv_rates_5_0= ruleFunctionLibraryRate ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:344:1: (lv_rates_5_0= ruleFunctionLibraryRate )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:344:1: (lv_rates_5_0= ruleFunctionLibraryRate )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:345:3: lv_rates_5_0= ruleFunctionLibraryRate
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryGroupAccess().getRatesFunctionLibraryRateParserRuleCall_3_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryRate_in_ruleFunctionLibraryGroup593);
+            	    lv_rates_5_0=ruleFunctionLibraryRate();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"rates",
+            	              		lv_rates_5_0, 
+            	              		"FunctionLibraryRate");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop4;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleFunctionLibraryGroup607); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryGroupAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryGroup"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryBlipGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:373:1: entryRuleFunctionLibraryBlipGroup returns [EObject current=null] : iv_ruleFunctionLibraryBlipGroup= ruleFunctionLibraryBlipGroup EOF ;
+    public final EObject entryRuleFunctionLibraryBlipGroup() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryBlipGroup = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:374:2: (iv_ruleFunctionLibraryBlipGroup= ruleFunctionLibraryBlipGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:375:2: iv_ruleFunctionLibraryBlipGroup= ruleFunctionLibraryBlipGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryBlipGroup_in_entryRuleFunctionLibraryBlipGroup643);
+            iv_ruleFunctionLibraryBlipGroup=ruleFunctionLibraryBlipGroup();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryBlipGroup; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryBlipGroup653); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryBlipGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryBlipGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:382:1: ruleFunctionLibraryBlipGroup returns [EObject current=null] : (otherlv_0= 'blip-group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleFunctionLibraryBlipGroup() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_functions_3_0 = null;
+
+        EObject lv_tests_4_0 = null;
+
+        EObject lv_rates_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:385:28: ( (otherlv_0= 'blip-group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:386:1: (otherlv_0= 'blip-group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:386:1: (otherlv_0= 'blip-group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:386:3: otherlv_0= 'blip-group' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleFunctionLibraryBlipGroup690); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryBlipGroupAccess().getBlipGroupKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:390:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:391:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:391:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:392:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryBlipGroup711);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleFunctionLibraryBlipGroup723); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryBlipGroupAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:412:1: ( ( (lv_functions_3_0= ruleFunctionLibraryFunction ) ) | ( (lv_tests_4_0= ruleFunctionLibraryTest ) ) | ( (lv_rates_5_0= ruleFunctionLibraryRate ) ) )*
+            loop5:
+            do {
+                int alt5=4;
+                switch ( input.LA(1) ) {
+                case 25:
+                    {
+                    alt5=1;
+                    }
+                    break;
+                case 30:
+                    {
+                    alt5=2;
+                    }
+                    break;
+                case 31:
+                    {
+                    alt5=3;
+                    }
+                    break;
+
+                }
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:412:2: ( (lv_functions_3_0= ruleFunctionLibraryFunction ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:412:2: ( (lv_functions_3_0= ruleFunctionLibraryFunction ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:413:1: (lv_functions_3_0= ruleFunctionLibraryFunction )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:413:1: (lv_functions_3_0= ruleFunctionLibraryFunction )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:414:3: lv_functions_3_0= ruleFunctionLibraryFunction
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryFunction_in_ruleFunctionLibraryBlipGroup745);
+            	    lv_functions_3_0=ruleFunctionLibraryFunction();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"functions",
+            	              		lv_functions_3_0, 
+            	              		"FunctionLibraryFunction");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:431:6: ( (lv_tests_4_0= ruleFunctionLibraryTest ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:431:6: ( (lv_tests_4_0= ruleFunctionLibraryTest ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:432:1: (lv_tests_4_0= ruleFunctionLibraryTest )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:432:1: (lv_tests_4_0= ruleFunctionLibraryTest )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:433:3: lv_tests_4_0= ruleFunctionLibraryTest
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getTestsFunctionLibraryTestParserRuleCall_3_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryTest_in_ruleFunctionLibraryBlipGroup772);
+            	    lv_tests_4_0=ruleFunctionLibraryTest();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"tests",
+            	              		lv_tests_4_0, 
+            	              		"FunctionLibraryTest");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:450:6: ( (lv_rates_5_0= ruleFunctionLibraryRate ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:450:6: ( (lv_rates_5_0= ruleFunctionLibraryRate ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:451:1: (lv_rates_5_0= ruleFunctionLibraryRate )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:451:1: (lv_rates_5_0= ruleFunctionLibraryRate )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:452:3: lv_rates_5_0= ruleFunctionLibraryRate
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryBlipGroupAccess().getRatesFunctionLibraryRateParserRuleCall_3_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryRate_in_ruleFunctionLibraryBlipGroup799);
+            	    lv_rates_5_0=ruleFunctionLibraryRate();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryBlipGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"rates",
+            	              		lv_rates_5_0, 
+            	              		"FunctionLibraryRate");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleFunctionLibraryBlipGroup813); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryBlipGroupAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryBlipGroup"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryStatemachineGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:480:1: entryRuleFunctionLibraryStatemachineGroup returns [EObject current=null] : iv_ruleFunctionLibraryStatemachineGroup= ruleFunctionLibraryStatemachineGroup EOF ;
+    public final EObject entryRuleFunctionLibraryStatemachineGroup() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryStatemachineGroup = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:481:2: (iv_ruleFunctionLibraryStatemachineGroup= ruleFunctionLibraryStatemachineGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:482:2: iv_ruleFunctionLibraryStatemachineGroup= ruleFunctionLibraryStatemachineGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryStatemachineGroup_in_entryRuleFunctionLibraryStatemachineGroup849);
+            iv_ruleFunctionLibraryStatemachineGroup=ruleFunctionLibraryStatemachineGroup();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryStatemachineGroup; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryStatemachineGroup859); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryStatemachineGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryStatemachineGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:489:1: ruleFunctionLibraryStatemachineGroup returns [EObject current=null] : (otherlv_0= 'statemachine' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_operations_3_0= ruleFunctionLibraryOperation ) ) | ( (lv_guards_4_0= ruleFunctionLibraryGuard ) ) | ( (lv_functions_5_0= ruleFunctionLibraryFunction ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleFunctionLibraryStatemachineGroup() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_operations_3_0 = null;
+
+        EObject lv_guards_4_0 = null;
+
+        EObject lv_functions_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:492:28: ( (otherlv_0= 'statemachine' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_operations_3_0= ruleFunctionLibraryOperation ) ) | ( (lv_guards_4_0= ruleFunctionLibraryGuard ) ) | ( (lv_functions_5_0= ruleFunctionLibraryFunction ) ) )* otherlv_6= '}' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:493:1: (otherlv_0= 'statemachine' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_operations_3_0= ruleFunctionLibraryOperation ) ) | ( (lv_guards_4_0= ruleFunctionLibraryGuard ) ) | ( (lv_functions_5_0= ruleFunctionLibraryFunction ) ) )* otherlv_6= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:493:1: (otherlv_0= 'statemachine' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_operations_3_0= ruleFunctionLibraryOperation ) ) | ( (lv_guards_4_0= ruleFunctionLibraryGuard ) ) | ( (lv_functions_5_0= ruleFunctionLibraryFunction ) ) )* otherlv_6= '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:493:3: otherlv_0= 'statemachine' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' ( ( (lv_operations_3_0= ruleFunctionLibraryOperation ) ) | ( (lv_guards_4_0= ruleFunctionLibraryGuard ) ) | ( (lv_functions_5_0= ruleFunctionLibraryFunction ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleFunctionLibraryStatemachineGroup896); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryStatemachineGroupAccess().getStatemachineKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:497:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:498:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:498:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:499:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryStatemachineGroup917);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleFunctionLibraryStatemachineGroup929); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryStatemachineGroupAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:519:1: ( ( (lv_operations_3_0= ruleFunctionLibraryOperation ) ) | ( (lv_guards_4_0= ruleFunctionLibraryGuard ) ) | ( (lv_functions_5_0= ruleFunctionLibraryFunction ) ) )*
+            loop6:
+            do {
+                int alt6=4;
+                switch ( input.LA(1) ) {
+                case 33:
+                    {
+                    alt6=1;
+                    }
+                    break;
+                case 32:
+                    {
+                    alt6=2;
+                    }
+                    break;
+                case 25:
+                    {
+                    alt6=3;
+                    }
+                    break;
+
+                }
+
+                switch (alt6) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:519:2: ( (lv_operations_3_0= ruleFunctionLibraryOperation ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:519:2: ( (lv_operations_3_0= ruleFunctionLibraryOperation ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:520:1: (lv_operations_3_0= ruleFunctionLibraryOperation )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:520:1: (lv_operations_3_0= ruleFunctionLibraryOperation )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:521:3: lv_operations_3_0= ruleFunctionLibraryOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getOperationsFunctionLibraryOperationParserRuleCall_3_0_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryOperation_in_ruleFunctionLibraryStatemachineGroup951);
+            	    lv_operations_3_0=ruleFunctionLibraryOperation();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"operations",
+            	              		lv_operations_3_0, 
+            	              		"FunctionLibraryOperation");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:538:6: ( (lv_guards_4_0= ruleFunctionLibraryGuard ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:538:6: ( (lv_guards_4_0= ruleFunctionLibraryGuard ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:539:1: (lv_guards_4_0= ruleFunctionLibraryGuard )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:539:1: (lv_guards_4_0= ruleFunctionLibraryGuard )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:540:3: lv_guards_4_0= ruleFunctionLibraryGuard
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getGuardsFunctionLibraryGuardParserRuleCall_3_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryGuard_in_ruleFunctionLibraryStatemachineGroup978);
+            	    lv_guards_4_0=ruleFunctionLibraryGuard();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"guards",
+            	              		lv_guards_4_0, 
+            	              		"FunctionLibraryGuard");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:557:6: ( (lv_functions_5_0= ruleFunctionLibraryFunction ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:557:6: ( (lv_functions_5_0= ruleFunctionLibraryFunction ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:558:1: (lv_functions_5_0= ruleFunctionLibraryFunction )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:558:1: (lv_functions_5_0= ruleFunctionLibraryFunction )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:559:3: lv_functions_5_0= ruleFunctionLibraryFunction
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryStatemachineGroupAccess().getFunctionsFunctionLibraryFunctionParserRuleCall_3_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryFunction_in_ruleFunctionLibraryStatemachineGroup1005);
+            	    lv_functions_5_0=ruleFunctionLibraryFunction();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryStatemachineGroupRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"functions",
+            	              		lv_functions_5_0, 
+            	              		"FunctionLibraryFunction");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleFunctionLibraryStatemachineGroup1019); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryStatemachineGroupAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryStatemachineGroup"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryConverterGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:587:1: entryRuleFunctionLibraryConverterGroup returns [EObject current=null] : iv_ruleFunctionLibraryConverterGroup= ruleFunctionLibraryConverterGroup EOF ;
+    public final EObject entryRuleFunctionLibraryConverterGroup() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryConverterGroup = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:588:2: (iv_ruleFunctionLibraryConverterGroup= ruleFunctionLibraryConverterGroup EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:589:2: iv_ruleFunctionLibraryConverterGroup= ruleFunctionLibraryConverterGroup EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryConverterGroup_in_entryRuleFunctionLibraryConverterGroup1055);
+            iv_ruleFunctionLibraryConverterGroup=ruleFunctionLibraryConverterGroup();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryConverterGroup; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryConverterGroup1065); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryConverterGroup"
+
+
+    // $ANTLR start "ruleFunctionLibraryConverterGroup"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:596:1: ruleFunctionLibraryConverterGroup returns [EObject current=null] : (otherlv_0= 'converter' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' otherlv_3= 'model-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_5= 'presentation-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_convertToModel_7_0= ruleFunctionConvertToModel ) ) ( (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation ) ) otherlv_9= '}' ) ;
+    public final EObject ruleFunctionLibraryConverterGroup() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_9=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_convertToModel_7_0 = null;
+
+        EObject lv_convertToPresentation_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:599:28: ( (otherlv_0= 'converter' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' otherlv_3= 'model-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_5= 'presentation-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_convertToModel_7_0= ruleFunctionConvertToModel ) ) ( (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation ) ) otherlv_9= '}' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:600:1: (otherlv_0= 'converter' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' otherlv_3= 'model-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_5= 'presentation-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_convertToModel_7_0= ruleFunctionConvertToModel ) ) ( (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation ) ) otherlv_9= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:600:1: (otherlv_0= 'converter' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' otherlv_3= 'model-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_5= 'presentation-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_convertToModel_7_0= ruleFunctionConvertToModel ) ) ( (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation ) ) otherlv_9= '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:600:3: otherlv_0= 'converter' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '{' otherlv_3= 'model-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_5= 'presentation-datatype' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_convertToModel_7_0= ruleFunctionConvertToModel ) ) ( (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation ) ) otherlv_9= '}'
+            {
+            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleFunctionLibraryConverterGroup1102); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryConverterGroupAccess().getConverterKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:604:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:605:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:605:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:606:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryConverterGroup1123);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryConverterGroupRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleFunctionLibraryConverterGroup1135); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryConverterGroupAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            otherlv_3=(Token)match(input,20,FOLLOW_20_in_ruleFunctionLibraryConverterGroup1147); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getFunctionLibraryConverterGroupAccess().getModelDatatypeKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:630:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:631:1: ( ruleTYPE_CROSS_REFERENCE )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:631:1: ( ruleTYPE_CROSS_REFERENCE )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:632:3: ruleTYPE_CROSS_REFERENCE
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getFunctionLibraryConverterGroupRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelDatatypeLDataTypeCrossReference_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleFunctionLibraryConverterGroup1170);
+            ruleTYPE_CROSS_REFERENCE();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,21,FOLLOW_21_in_ruleFunctionLibraryConverterGroup1182); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getFunctionLibraryConverterGroupAccess().getPresentationDatatypeKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:649:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:650:1: ( ruleTYPE_CROSS_REFERENCE )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:650:1: ( ruleTYPE_CROSS_REFERENCE )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:651:3: ruleTYPE_CROSS_REFERENCE
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getFunctionLibraryConverterGroupRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationDatatypeLDataTypeCrossReference_6_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleFunctionLibraryConverterGroup1205);
+            ruleTYPE_CROSS_REFERENCE();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:664:2: ( (lv_convertToModel_7_0= ruleFunctionConvertToModel ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:665:1: (lv_convertToModel_7_0= ruleFunctionConvertToModel )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:665:1: (lv_convertToModel_7_0= ruleFunctionConvertToModel )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:666:3: lv_convertToModel_7_0= ruleFunctionConvertToModel
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToModelFunctionConvertToModelParserRuleCall_7_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleFunctionConvertToModel_in_ruleFunctionLibraryConverterGroup1226);
+            lv_convertToModel_7_0=ruleFunctionConvertToModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryConverterGroupRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"convertToModel",
+                      		lv_convertToModel_7_0, 
+                      		"FunctionConvertToModel");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:682:2: ( (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:683:1: (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:683:1: (lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:684:3: lv_convertToPresentation_8_0= ruleFunctionConvertToPresentation
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryConverterGroupAccess().getConvertToPresentationFunctionConvertToPresentationParserRuleCall_8_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleFunctionConvertToPresentation_in_ruleFunctionLibraryConverterGroup1247);
+            lv_convertToPresentation_8_0=ruleFunctionConvertToPresentation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryConverterGroupRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"convertToPresentation",
+                      		lv_convertToPresentation_8_0, 
+                      		"FunctionConvertToPresentation");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,15,FOLLOW_15_in_ruleFunctionLibraryConverterGroup1259); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_9, grammarAccess.getFunctionLibraryConverterGroupAccess().getRightCurlyBracketKeyword_9());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryConverterGroup"
+
+
+    // $ANTLR start "entryRuleFunctionConvertToModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:712:1: entryRuleFunctionConvertToModel returns [EObject current=null] : iv_ruleFunctionConvertToModel= ruleFunctionConvertToModel EOF ;
+    public final EObject entryRuleFunctionConvertToModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionConvertToModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:713:2: (iv_ruleFunctionConvertToModel= ruleFunctionConvertToModel EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:714:2: iv_ruleFunctionConvertToModel= ruleFunctionConvertToModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionConvertToModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionConvertToModel_in_entryRuleFunctionConvertToModel1295);
+            iv_ruleFunctionConvertToModel=ruleFunctionConvertToModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionConvertToModel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionConvertToModel1305); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionConvertToModel"
+
+
+    // $ANTLR start "ruleFunctionConvertToModel"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:721:1: ruleFunctionConvertToModel returns [EObject current=null] : (otherlv_0= 'to-model' ( (lv_body_1_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionConvertToModel() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_body_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:724:28: ( (otherlv_0= 'to-model' ( (lv_body_1_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:725:1: (otherlv_0= 'to-model' ( (lv_body_1_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:725:1: (otherlv_0= 'to-model' ( (lv_body_1_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:725:3: otherlv_0= 'to-model' ( (lv_body_1_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleFunctionConvertToModel1342); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionConvertToModelAccess().getToModelKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:729:1: ( (lv_body_1_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:730:1: (lv_body_1_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:730:1: (lv_body_1_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:731:3: lv_body_1_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionConvertToModelAccess().getBodyXBlockExpressionParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionConvertToModel1363);
+            lv_body_1_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionConvertToModelRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_1_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionConvertToModel"
+
+
+    // $ANTLR start "entryRuleFunctionConvertToPresentation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:755:1: entryRuleFunctionConvertToPresentation returns [EObject current=null] : iv_ruleFunctionConvertToPresentation= ruleFunctionConvertToPresentation EOF ;
+    public final EObject entryRuleFunctionConvertToPresentation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionConvertToPresentation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:756:2: (iv_ruleFunctionConvertToPresentation= ruleFunctionConvertToPresentation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:757:2: iv_ruleFunctionConvertToPresentation= ruleFunctionConvertToPresentation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionConvertToPresentationRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionConvertToPresentation_in_entryRuleFunctionConvertToPresentation1399);
+            iv_ruleFunctionConvertToPresentation=ruleFunctionConvertToPresentation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionConvertToPresentation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionConvertToPresentation1409); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionConvertToPresentation"
+
+
+    // $ANTLR start "ruleFunctionConvertToPresentation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:764:1: ruleFunctionConvertToPresentation returns [EObject current=null] : (otherlv_0= 'to-presentation' ( (lv_body_1_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionConvertToPresentation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_body_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:767:28: ( (otherlv_0= 'to-presentation' ( (lv_body_1_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:768:1: (otherlv_0= 'to-presentation' ( (lv_body_1_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:768:1: (otherlv_0= 'to-presentation' ( (lv_body_1_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:768:3: otherlv_0= 'to-presentation' ( (lv_body_1_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleFunctionConvertToPresentation1446); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionConvertToPresentationAccess().getToPresentationKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:772:1: ( (lv_body_1_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:773:1: (lv_body_1_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:773:1: (lv_body_1_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:774:3: lv_body_1_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionConvertToPresentationAccess().getBodyXBlockExpressionParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionConvertToPresentation1467);
+            lv_body_1_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionConvertToPresentationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_1_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionConvertToPresentation"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryRating"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:798:1: entryRuleFunctionLibraryRating returns [EObject current=null] : iv_ruleFunctionLibraryRating= ruleFunctionLibraryRating EOF ;
+    public final EObject entryRuleFunctionLibraryRating() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryRating = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:799:2: (iv_ruleFunctionLibraryRating= ruleFunctionLibraryRating EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:800:2: iv_ruleFunctionLibraryRating= ruleFunctionLibraryRating EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryRatingRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryRating_in_entryRuleFunctionLibraryRating1503);
+            iv_ruleFunctionLibraryRating=ruleFunctionLibraryRating();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryRating; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryRating1513); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryRating"
+
+
+    // $ANTLR start "ruleFunctionLibraryRating"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:807:1: ruleFunctionLibraryRating returns [EObject current=null] : ( () otherlv_1= 'rating' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= '{' ( (lv_items_4_0= ruleFunctionLibraryRatingItem ) )* otherlv_5= '}' ) ;
+    public final EObject ruleFunctionLibraryRating() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        EObject lv_items_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:810:28: ( ( () otherlv_1= 'rating' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= '{' ( (lv_items_4_0= ruleFunctionLibraryRatingItem ) )* otherlv_5= '}' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:811:1: ( () otherlv_1= 'rating' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= '{' ( (lv_items_4_0= ruleFunctionLibraryRatingItem ) )* otherlv_5= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:811:1: ( () otherlv_1= 'rating' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= '{' ( (lv_items_4_0= ruleFunctionLibraryRatingItem ) )* otherlv_5= '}' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:811:2: () otherlv_1= 'rating' ( (lv_name_2_0= ruleValidID ) ) otherlv_3= '{' ( (lv_items_4_0= ruleFunctionLibraryRatingItem ) )* otherlv_5= '}'
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:811:2: ()
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:812:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getFunctionLibraryRatingAccess().getFunctionLibraryRatingAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleFunctionLibraryRating1559); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getFunctionLibraryRatingAccess().getRatingKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:821:1: ( (lv_name_2_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:822:1: (lv_name_2_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:822:1: (lv_name_2_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:823:3: lv_name_2_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryRatingAccess().getNameValidIDParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryRating1580);
+            lv_name_2_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRatingRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleFunctionLibraryRating1592); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getFunctionLibraryRatingAccess().getLeftCurlyBracketKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:843:1: ( (lv_items_4_0= ruleFunctionLibraryRatingItem ) )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0==RULE_ID) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:844:1: (lv_items_4_0= ruleFunctionLibraryRatingItem )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:844:1: (lv_items_4_0= ruleFunctionLibraryRatingItem )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:845:3: lv_items_4_0= ruleFunctionLibraryRatingItem
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getFunctionLibraryRatingAccess().getItemsFunctionLibraryRatingItemParserRuleCall_4_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleFunctionLibraryRatingItem_in_ruleFunctionLibraryRating1613);
+            	    lv_items_4_0=ruleFunctionLibraryRatingItem();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRatingRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"items",
+            	              		lv_items_4_0, 
+            	              		"FunctionLibraryRatingItem");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleFunctionLibraryRating1626); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getFunctionLibraryRatingAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryRating"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryRatingItem"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:873:1: entryRuleFunctionLibraryRatingItem returns [EObject current=null] : iv_ruleFunctionLibraryRatingItem= ruleFunctionLibraryRatingItem EOF ;
+    public final EObject entryRuleFunctionLibraryRatingItem() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryRatingItem = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:874:2: (iv_ruleFunctionLibraryRatingItem= ruleFunctionLibraryRatingItem EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:875:2: iv_ruleFunctionLibraryRatingItem= ruleFunctionLibraryRatingItem EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryRatingItemRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryRatingItem_in_entryRuleFunctionLibraryRatingItem1662);
+            iv_ruleFunctionLibraryRatingItem=ruleFunctionLibraryRatingItem();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryRatingItem; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryRatingItem1672); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryRatingItem"
+
+
+    // $ANTLR start "ruleFunctionLibraryRatingItem"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:882:1: ruleFunctionLibraryRatingItem returns [EObject current=null] : ( (lv_name_0_0= ruleValidID ) ) ;
+    public final EObject ruleFunctionLibraryRatingItem() throws RecognitionException {
+        EObject current = null;
+
+        AntlrDatatypeRuleToken lv_name_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:885:28: ( ( (lv_name_0_0= ruleValidID ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:886:1: ( (lv_name_0_0= ruleValidID ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:886:1: ( (lv_name_0_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:887:1: (lv_name_0_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:887:1: (lv_name_0_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:888:3: lv_name_0_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryRatingItemAccess().getNameValidIDParserRuleCall_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryRatingItem1717);
+            lv_name_0_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRatingItemRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_0_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryRatingItem"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryFunction"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:912:1: entryRuleFunctionLibraryFunction returns [EObject current=null] : iv_ruleFunctionLibraryFunction= ruleFunctionLibraryFunction EOF ;
+    public final EObject entryRuleFunctionLibraryFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:913:2: (iv_ruleFunctionLibraryFunction= ruleFunctionLibraryFunction EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:914:2: iv_ruleFunctionLibraryFunction= ruleFunctionLibraryFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryFunction_in_entryRuleFunctionLibraryFunction1752);
+            iv_ruleFunctionLibraryFunction=ruleFunctionLibraryFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryFunction1762); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryFunction"
+
+
+    // $ANTLR start "ruleFunctionLibraryFunction"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:921:1: ruleFunctionLibraryFunction returns [EObject current=null] : (otherlv_0= 'function' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (lv_oftype_8_0= ruleJvmParameterizedTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionLibraryFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_params_3_0 = null;
+
+        EObject lv_params_5_0 = null;
+
+        EObject lv_oftype_8_0 = null;
+
+        EObject lv_body_9_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:924:28: ( (otherlv_0= 'function' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (lv_oftype_8_0= ruleJvmParameterizedTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:925:1: (otherlv_0= 'function' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (lv_oftype_8_0= ruleJvmParameterizedTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:925:1: (otherlv_0= 'function' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (lv_oftype_8_0= ruleJvmParameterizedTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:925:3: otherlv_0= 'function' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (lv_oftype_8_0= ruleJvmParameterizedTypeReference ) ) ( (lv_body_9_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleFunctionLibraryFunction1799); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryFunctionAccess().getFunctionKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:929:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:930:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:930:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:931:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryFunction1820);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleFunctionLibraryFunction1832); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryFunctionAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:951:1: ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==RULE_ID||LA9_0==26||LA9_0==57) ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:951:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:951:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:952:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:952:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:953:3: lv_params_3_0= ruleFunctionLibraryParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryFunction1854);
+                    lv_params_3_0=ruleFunctionLibraryParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"params",
+                              		lv_params_3_0, 
+                              		"FunctionLibraryParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:969:2: (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    loop8:
+                    do {
+                        int alt8=2;
+                        int LA8_0 = input.LA(1);
+
+                        if ( (LA8_0==27) ) {
+                            alt8=1;
+                        }
+
+
+                        switch (alt8) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:969:4: otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleFunctionLibraryFunction1867); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryFunctionAccess().getCommaKeyword_3_1_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:973:1: ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:974:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:974:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:975:3: lv_params_5_0= ruleFunctionLibraryParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryFunction1888);
+                    	    lv_params_5_0=ruleFunctionLibraryParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"params",
+                    	              		lv_params_5_0, 
+                    	              		"FunctionLibraryParameter");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop8;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleFunctionLibraryFunction1904); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryFunctionAccess().getRightParenthesisKeyword_4());
+                  
+            }
+            otherlv_7=(Token)match(input,29,FOLLOW_29_in_ruleFunctionLibraryFunction1916); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getFunctionLibraryFunctionAccess().getReturnsKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:999:1: ( (lv_oftype_8_0= ruleJvmParameterizedTypeReference ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1000:1: (lv_oftype_8_0= ruleJvmParameterizedTypeReference )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1000:1: (lv_oftype_8_0= ruleJvmParameterizedTypeReference )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1001:3: lv_oftype_8_0= ruleJvmParameterizedTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getOftypeJvmParameterizedTypeReferenceParserRuleCall_6_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_ruleFunctionLibraryFunction1937);
+            lv_oftype_8_0=ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"oftype",
+                      		lv_oftype_8_0, 
+                      		"JvmParameterizedTypeReference");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1017:2: ( (lv_body_9_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1018:1: (lv_body_9_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1018:1: (lv_body_9_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1019:3: lv_body_9_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryFunctionAccess().getBodyXBlockExpressionParserRuleCall_7_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionLibraryFunction1958);
+            lv_body_9_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_9_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryFunction"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryTest"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1043:1: entryRuleFunctionLibraryTest returns [EObject current=null] : iv_ruleFunctionLibraryTest= ruleFunctionLibraryTest EOF ;
+    public final EObject entryRuleFunctionLibraryTest() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryTest = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1044:2: (iv_ruleFunctionLibraryTest= ruleFunctionLibraryTest EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1045:2: iv_ruleFunctionLibraryTest= ruleFunctionLibraryTest EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryTestRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryTest_in_entryRuleFunctionLibraryTest1994);
+            iv_ruleFunctionLibraryTest=ruleFunctionLibraryTest();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryTest; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryTest2004); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryTest"
+
+
+    // $ANTLR start "ruleFunctionLibraryTest"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1052:1: ruleFunctionLibraryTest returns [EObject current=null] : (otherlv_0= 'test' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionLibraryTest() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_params_3_0 = null;
+
+        EObject lv_params_5_0 = null;
+
+        EObject lv_body_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1055:28: ( (otherlv_0= 'test' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1056:1: (otherlv_0= 'test' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1056:1: (otherlv_0= 'test' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1056:3: otherlv_0= 'test' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleFunctionLibraryTest2041); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryTestAccess().getTestKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1060:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1061:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1061:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1062:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryTest2062);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleFunctionLibraryTest2074); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryTestAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1082:1: ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )?
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==RULE_ID||LA11_0==26||LA11_0==57) ) {
+                alt11=1;
+            }
+            switch (alt11) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1082:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1082:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1083:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1083:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1084:3: lv_params_3_0= ruleFunctionLibraryParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryTest2096);
+                    lv_params_3_0=ruleFunctionLibraryParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"params",
+                              		lv_params_3_0, 
+                              		"FunctionLibraryParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1100:2: (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    loop10:
+                    do {
+                        int alt10=2;
+                        int LA10_0 = input.LA(1);
+
+                        if ( (LA10_0==27) ) {
+                            alt10=1;
+                        }
+
+
+                        switch (alt10) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1100:4: otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleFunctionLibraryTest2109); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryTestAccess().getCommaKeyword_3_1_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1104:1: ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1105:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1105:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1106:3: lv_params_5_0= ruleFunctionLibraryParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryTest2130);
+                    	    lv_params_5_0=ruleFunctionLibraryParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"params",
+                    	              		lv_params_5_0, 
+                    	              		"FunctionLibraryParameter");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop10;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleFunctionLibraryTest2146); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryTestAccess().getRightParenthesisKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1126:1: ( (lv_body_7_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1127:1: (lv_body_7_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1127:1: (lv_body_7_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1128:3: lv_body_7_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryTestAccess().getBodyXBlockExpressionParserRuleCall_5_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionLibraryTest2167);
+            lv_body_7_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryTestRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_7_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryTest"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryRate"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1152:1: entryRuleFunctionLibraryRate returns [EObject current=null] : iv_ruleFunctionLibraryRate= ruleFunctionLibraryRate EOF ;
+    public final EObject entryRuleFunctionLibraryRate() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryRate = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1153:2: (iv_ruleFunctionLibraryRate= ruleFunctionLibraryRate EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1154:2: iv_ruleFunctionLibraryRate= ruleFunctionLibraryRate EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryRateRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryRate_in_entryRuleFunctionLibraryRate2203);
+            iv_ruleFunctionLibraryRate=ruleFunctionLibraryRate();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryRate; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryRate2213); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryRate"
+
+
+    // $ANTLR start "ruleFunctionLibraryRate"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1161:1: ruleFunctionLibraryRate returns [EObject current=null] : (otherlv_0= 'rate' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (otherlv_8= RULE_ID ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionLibraryRate() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_params_3_0 = null;
+
+        EObject lv_params_5_0 = null;
+
+        EObject lv_body_9_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1164:28: ( (otherlv_0= 'rate' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (otherlv_8= RULE_ID ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1165:1: (otherlv_0= 'rate' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (otherlv_8= RULE_ID ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1165:1: (otherlv_0= 'rate' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (otherlv_8= RULE_ID ) ) ( (lv_body_9_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1165:3: otherlv_0= 'rate' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' otherlv_7= 'returns' ( (otherlv_8= RULE_ID ) ) ( (lv_body_9_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleFunctionLibraryRate2250); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryRateAccess().getRateKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1169:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1170:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1170:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1171:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryRate2271);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleFunctionLibraryRate2283); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryRateAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1191:1: ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==RULE_ID||LA13_0==26||LA13_0==57) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1191:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1191:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1192:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1192:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1193:3: lv_params_3_0= ruleFunctionLibraryParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryRate2305);
+                    lv_params_3_0=ruleFunctionLibraryParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"params",
+                              		lv_params_3_0, 
+                              		"FunctionLibraryParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1209:2: (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    loop12:
+                    do {
+                        int alt12=2;
+                        int LA12_0 = input.LA(1);
+
+                        if ( (LA12_0==27) ) {
+                            alt12=1;
+                        }
+
+
+                        switch (alt12) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1209:4: otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleFunctionLibraryRate2318); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryRateAccess().getCommaKeyword_3_1_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1213:1: ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1214:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1214:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1215:3: lv_params_5_0= ruleFunctionLibraryParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryRate2339);
+                    	    lv_params_5_0=ruleFunctionLibraryParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"params",
+                    	              		lv_params_5_0, 
+                    	              		"FunctionLibraryParameter");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop12;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleFunctionLibraryRate2355); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryRateAccess().getRightParenthesisKeyword_4());
+                  
+            }
+            otherlv_7=(Token)match(input,29,FOLLOW_29_in_ruleFunctionLibraryRate2367); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getFunctionLibraryRateAccess().getReturnsKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1239:1: ( (otherlv_8= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1240:1: (otherlv_8= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1240:1: (otherlv_8= RULE_ID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1241:3: otherlv_8= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getFunctionLibraryRateRule());
+              	        }
+                      
+            }
+            otherlv_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunctionLibraryRate2387); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_8, grammarAccess.getFunctionLibraryRateAccess().getOftypeFunctionLibraryRatingCrossReference_6_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1252:2: ( (lv_body_9_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1253:1: (lv_body_9_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1253:1: (lv_body_9_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1254:3: lv_body_9_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryRateAccess().getBodyXBlockExpressionParserRuleCall_7_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionLibraryRate2408);
+            lv_body_9_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryRateRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_9_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryRate"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryGuard"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1278:1: entryRuleFunctionLibraryGuard returns [EObject current=null] : iv_ruleFunctionLibraryGuard= ruleFunctionLibraryGuard EOF ;
+    public final EObject entryRuleFunctionLibraryGuard() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryGuard = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1279:2: (iv_ruleFunctionLibraryGuard= ruleFunctionLibraryGuard EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1280:2: iv_ruleFunctionLibraryGuard= ruleFunctionLibraryGuard EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryGuardRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryGuard_in_entryRuleFunctionLibraryGuard2444);
+            iv_ruleFunctionLibraryGuard=ruleFunctionLibraryGuard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryGuard; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryGuard2454); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryGuard"
+
+
+    // $ANTLR start "ruleFunctionLibraryGuard"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1287:1: ruleFunctionLibraryGuard returns [EObject current=null] : (otherlv_0= 'guard' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionLibraryGuard() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_params_3_0 = null;
+
+        EObject lv_params_5_0 = null;
+
+        EObject lv_body_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1290:28: ( (otherlv_0= 'guard' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1291:1: (otherlv_0= 'guard' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1291:1: (otherlv_0= 'guard' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1291:3: otherlv_0= 'guard' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleFunctionLibraryGuard2491); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryGuardAccess().getGuardKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1295:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1296:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1296:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1297:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryGuard2512);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleFunctionLibraryGuard2524); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryGuardAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1317:1: ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==RULE_ID||LA15_0==26||LA15_0==57) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1317:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1317:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1318:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1318:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1319:3: lv_params_3_0= ruleFunctionLibraryParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryGuard2546);
+                    lv_params_3_0=ruleFunctionLibraryParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"params",
+                              		lv_params_3_0, 
+                              		"FunctionLibraryParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1335:2: (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    loop14:
+                    do {
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
+
+                        if ( (LA14_0==27) ) {
+                            alt14=1;
+                        }
+
+
+                        switch (alt14) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1335:4: otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleFunctionLibraryGuard2559); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryGuardAccess().getCommaKeyword_3_1_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1339:1: ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1340:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1340:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1341:3: lv_params_5_0= ruleFunctionLibraryParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryGuard2580);
+                    	    lv_params_5_0=ruleFunctionLibraryParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"params",
+                    	              		lv_params_5_0, 
+                    	              		"FunctionLibraryParameter");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop14;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleFunctionLibraryGuard2596); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryGuardAccess().getRightParenthesisKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1361:1: ( (lv_body_7_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1362:1: (lv_body_7_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1362:1: (lv_body_7_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1363:3: lv_body_7_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryGuardAccess().getBodyXBlockExpressionParserRuleCall_5_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionLibraryGuard2617);
+            lv_body_7_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryGuardRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_7_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryGuard"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1387:1: entryRuleFunctionLibraryOperation returns [EObject current=null] : iv_ruleFunctionLibraryOperation= ruleFunctionLibraryOperation EOF ;
+    public final EObject entryRuleFunctionLibraryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryOperation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1388:2: (iv_ruleFunctionLibraryOperation= ruleFunctionLibraryOperation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1389:2: iv_ruleFunctionLibraryOperation= ruleFunctionLibraryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryOperation_in_entryRuleFunctionLibraryOperation2653);
+            iv_ruleFunctionLibraryOperation=ruleFunctionLibraryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryOperation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryOperation2663); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryOperation"
+
+
+    // $ANTLR start "ruleFunctionLibraryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1396:1: ruleFunctionLibraryOperation returns [EObject current=null] : (otherlv_0= 'operation' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) ) ;
+    public final EObject ruleFunctionLibraryOperation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_params_3_0 = null;
+
+        EObject lv_params_5_0 = null;
+
+        EObject lv_body_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1399:28: ( (otherlv_0= 'operation' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1400:1: (otherlv_0= 'operation' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1400:1: (otherlv_0= 'operation' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1400:3: otherlv_0= 'operation' ( (lv_name_1_0= ruleValidID ) ) otherlv_2= '(' ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )? otherlv_6= ')' ( (lv_body_7_0= ruleXBlockExpression ) )
+            {
+            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleFunctionLibraryOperation2700); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getFunctionLibraryOperationAccess().getOperationKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1404:1: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1405:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1405:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1406:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryOperation2721);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_26_in_ruleFunctionLibraryOperation2733); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getFunctionLibraryOperationAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1426:1: ( ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )* )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==RULE_ID||LA17_0==26||LA17_0==57) ) {
+                alt17=1;
+            }
+            switch (alt17) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1426:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) ) (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1426:2: ( (lv_params_3_0= ruleFunctionLibraryParameter ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1427:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1427:1: (lv_params_3_0= ruleFunctionLibraryParameter )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1428:3: lv_params_3_0= ruleFunctionLibraryParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getParamsFunctionLibraryParameterParserRuleCall_3_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryOperation2755);
+                    lv_params_3_0=ruleFunctionLibraryParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"params",
+                              		lv_params_3_0, 
+                              		"FunctionLibraryParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1444:2: (otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) ) )*
+                    loop16:
+                    do {
+                        int alt16=2;
+                        int LA16_0 = input.LA(1);
+
+                        if ( (LA16_0==27) ) {
+                            alt16=1;
+                        }
+
+
+                        switch (alt16) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1444:4: otherlv_4= ',' ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleFunctionLibraryOperation2768); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_4, grammarAccess.getFunctionLibraryOperationAccess().getCommaKeyword_3_1_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1448:1: ( (lv_params_5_0= ruleFunctionLibraryParameter ) )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1449:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1449:1: (lv_params_5_0= ruleFunctionLibraryParameter )
+                    	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1450:3: lv_params_5_0= ruleFunctionLibraryParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_ruleFunctionLibraryOperation2789);
+                    	    lv_params_5_0=ruleFunctionLibraryParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"params",
+                    	              		lv_params_5_0, 
+                    	              		"FunctionLibraryParameter");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop16;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,28,FOLLOW_28_in_ruleFunctionLibraryOperation2805); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getFunctionLibraryOperationAccess().getRightParenthesisKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1470:1: ( (lv_body_7_0= ruleXBlockExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1471:1: (lv_body_7_0= ruleXBlockExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1471:1: (lv_body_7_0= ruleXBlockExpression )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1472:3: lv_body_7_0= ruleXBlockExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryOperationAccess().getBodyXBlockExpressionParserRuleCall_5_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_ruleFunctionLibraryOperation2826);
+            lv_body_7_0=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryOperationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_7_0, 
+                      		"XBlockExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryOperation"
+
+
+    // $ANTLR start "entryRuleFunctionLibraryParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1496:1: entryRuleFunctionLibraryParameter returns [EObject current=null] : iv_ruleFunctionLibraryParameter= ruleFunctionLibraryParameter EOF ;
+    public final EObject entryRuleFunctionLibraryParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFunctionLibraryParameter = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1497:2: (iv_ruleFunctionLibraryParameter= ruleFunctionLibraryParameter EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1498:2: iv_ruleFunctionLibraryParameter= ruleFunctionLibraryParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFunctionLibraryParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleFunctionLibraryParameter_in_entryRuleFunctionLibraryParameter2862);
+            iv_ruleFunctionLibraryParameter=ruleFunctionLibraryParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFunctionLibraryParameter; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionLibraryParameter2872); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFunctionLibraryParameter"
+
+
+    // $ANTLR start "ruleFunctionLibraryParameter"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1505:1: ruleFunctionLibraryParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
+    public final EObject ruleFunctionLibraryParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_parameterType_0_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1508:28: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1509:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1509:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1509:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1509:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1510:1: (lv_parameterType_0_0= ruleJvmTypeReference )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1510:1: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1511:3: lv_parameterType_0_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleFunctionLibraryParameter2918);
+            lv_parameterType_0_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryParameterRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"parameterType",
+                      		lv_parameterType_0_0, 
+                      		"JvmTypeReference");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1527:2: ( (lv_name_1_0= ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1528:1: (lv_name_1_0= ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1528:1: (lv_name_1_0= ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1529:3: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getFunctionLibraryParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleFunctionLibraryParameter2939);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getFunctionLibraryParameterRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFunctionLibraryParameter"
+
+
+    // $ANTLR start "entryRuleTYPE_CROSS_REFERENCE"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1553:1: entryRuleTYPE_CROSS_REFERENCE returns [String current=null] : iv_ruleTYPE_CROSS_REFERENCE= ruleTYPE_CROSS_REFERENCE EOF ;
+    public final String entryRuleTYPE_CROSS_REFERENCE() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTYPE_CROSS_REFERENCE = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1554:2: (iv_ruleTYPE_CROSS_REFERENCE= ruleTYPE_CROSS_REFERENCE EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1555:2: iv_ruleTYPE_CROSS_REFERENCE= ruleTYPE_CROSS_REFERENCE EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTYPE_CROSS_REFERENCERule()); 
+            }
+            pushFollow(FOLLOW_ruleTYPE_CROSS_REFERENCE_in_entryRuleTYPE_CROSS_REFERENCE2976);
+            iv_ruleTYPE_CROSS_REFERENCE=ruleTYPE_CROSS_REFERENCE();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTYPE_CROSS_REFERENCE.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTYPE_CROSS_REFERENCE2987); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTYPE_CROSS_REFERENCE"
+
+
+    // $ANTLR start "ruleTYPE_CROSS_REFERENCE"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1562:1: ruleTYPE_CROSS_REFERENCE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    public final AntlrDatatypeRuleToken ruleTYPE_CROSS_REFERENCE() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_ID_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1565:28: (this_ID_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1566:5: this_ID_0= RULE_ID
+            {
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTYPE_CROSS_REFERENCE3026); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_ID_0, grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTYPE_CROSS_REFERENCE"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1581:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    public final EObject entryRuleXAnnotation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1582:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1583:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation3070);
+            iv_ruleXAnnotation=ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation3080); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotation"
+
+
+    // $ANTLR start "ruleXAnnotation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1590:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
+    public final EObject ruleXAnnotation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_8=null;
+        EObject lv_elementValuePairs_4_0 = null;
+
+        EObject lv_elementValuePairs_6_0 = null;
+
+        EObject lv_value_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1593:28: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1594:1: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1594:1: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1594:2: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1594:2: ()
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1595:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleXAnnotation3126); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1604:1: ( ( ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1605:1: ( ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1605:1: ( ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1606:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getXAnnotationRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXAnnotation3149);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1619:2: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==26) && (synpred1_InternalFunctionLibraryDsl())) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1619:3: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1619:3: ( ( '(' )=>otherlv_3= '(' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1619:4: ( '(' )=>otherlv_3= '('
+                    {
+                    otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleXAnnotation3170); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1624:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt19=3;
+                    alt19 = dfa19.predict(input);
+                    switch (alt19) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1624:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1624:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1624:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1624:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1624:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1630:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1631:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation3214);
+                            lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"elementValuePairs",
+                                      		lv_elementValuePairs_4_0, 
+                                      		"XAnnotationElementValuePair");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1647:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop18:
+                            do {
+                                int alt18=2;
+                                int LA18_0 = input.LA(1);
+
+                                if ( (LA18_0==27) ) {
+                                    alt18=1;
+                                }
+
+
+                                switch (alt18) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1647:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    {
+                            	    otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleXAnnotation3227); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1651:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1651:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1657:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1658:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation3268);
+                            	    lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elementValuePairs",
+                            	              		lv_elementValuePairs_6_0, 
+                            	              		"XAnnotationElementValuePair");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop18;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1675:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1675:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1676:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1676:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1677:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation3298);
+                            lv_value_7_0=ruleXAnnotationElementValueOrCommaList();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"value",
+                                      		lv_value_7_0, 
+                                      		"XAnnotationElementValueOrCommaList");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_8=(Token)match(input,28,FOLLOW_28_in_ruleXAnnotation3312); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotation"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1705:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValuePair = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1706:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1707:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair3350);
+            iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValuePair; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair3360); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1714:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_value_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1717:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1718:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1718:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1718:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1718:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1718:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1723:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1723:6: ( ( ruleValidID ) ) otherlv_1= '='
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1723:6: ( ( ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1724:1: ( ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1724:1: ( ruleValidID )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1725:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleXAnnotationElementValuePair3430);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,35,FOLLOW_35_in_ruleXAnnotationElementValuePair3442); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+                  
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1742:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1743:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1743:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1744:3: lv_value_2_0= ruleXAnnotationElementValue
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair3465);
+            lv_value_2_0=ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"value",
+                      		lv_value_2_0, 
+                      		"XAnnotationElementValue");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1768:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValueOrCommaList = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1769:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1770:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList3501);
+            iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValueOrCommaList; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList3511); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1777:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
+    public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_9=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+        EObject this_XAnnotationOrExpression_7 = null;
+
+        EObject lv_elements_10_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1780:28: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            int alt25=2;
+            alt25 = dfa25.predict(input);
+            switch (alt25) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1781:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1784:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1784:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1784:6: ()
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1785:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleXAnnotationElementValueOrCommaList3576); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+                          
+                    }
+                    otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleXAnnotationElementValueOrCommaList3588); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1798:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
+
+                    if ( ((LA22_0>=RULE_ID && LA22_0<=RULE_DECIMAL)||LA22_0==14||LA22_0==26||LA22_0==34||(LA22_0>=36 && LA22_0<=37)||LA22_0==44||(LA22_0>=60 && LA22_0<=61)||LA22_0==66||LA22_0==75||LA22_0==77||(LA22_0>=81 && LA22_0<=83)||(LA22_0>=86 && LA22_0<=98)||LA22_0==100) ) {
+                        alt22=1;
+                    }
+                    switch (alt22) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1798:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1798:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1799:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1799:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1800:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3612);
+                            lv_elements_3_0=ruleXAnnotationOrExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"elements",
+                                      		lv_elements_3_0, 
+                                      		"XAnnotationOrExpression");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1816:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop21:
+                            do {
+                                int alt21=2;
+                                int LA21_0 = input.LA(1);
+
+                                if ( (LA21_0==27) ) {
+                                    alt21=1;
+                                }
+
+
+                                switch (alt21) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1816:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleXAnnotationElementValueOrCommaList3625); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1820:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1821:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1821:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1822:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3646);
+                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elements",
+                            	              		lv_elements_5_0, 
+                            	              		"XAnnotationOrExpression");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop21;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,38,FOLLOW_38_in_ruleXAnnotationElementValueOrCommaList3662); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1843:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1843:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1844:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3692);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotationOrExpression_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1852:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt24=2;
+                    int LA24_0 = input.LA(1);
+
+                    if ( (LA24_0==27) ) {
+                        alt24=1;
+                    }
+                    switch (alt24) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1852:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1852:2: ()
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1853:5: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                                      current = forceCreateModelElementAndAdd(
+                                          grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                                          current);
+                                  
+                            }
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1858:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt23=0;
+                            loop23:
+                            do {
+                                int alt23=2;
+                                int LA23_0 = input.LA(1);
+
+                                if ( (LA23_0==27) ) {
+                                    alt23=1;
+                                }
+
+
+                                switch (alt23) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1858:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleXAnnotationElementValueOrCommaList3714); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1862:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1863:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1863:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1864:3: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3735);
+                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elements",
+                            	              		lv_elements_10_0, 
+                            	              		"XAnnotationOrExpression");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    if ( cnt23 >= 1 ) break loop23;
+                            	    if (state.backtracking>0) {state.failed=true; return current;}
+                                        EarlyExitException eee =
+                                            new EarlyExitException(23, input);
+                                        throw eee;
+                                }
+                                cnt23++;
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1888:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1889:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1890:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue3776);
+            iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValue; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue3786); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1897:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
+    public final EObject ruleXAnnotationElementValue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+        EObject this_XAnnotationOrExpression_7 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1900:28: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt28=2;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1901:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1904:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1904:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1904:6: ()
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1905:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleXAnnotationElementValue3851); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+                          
+                    }
+                    otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleXAnnotationElementValue3863); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1918:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
+
+                    if ( ((LA27_0>=RULE_ID && LA27_0<=RULE_DECIMAL)||LA27_0==14||LA27_0==26||LA27_0==34||(LA27_0>=36 && LA27_0<=37)||LA27_0==44||(LA27_0>=60 && LA27_0<=61)||LA27_0==66||LA27_0==75||LA27_0==77||(LA27_0>=81 && LA27_0<=83)||(LA27_0>=86 && LA27_0<=98)||LA27_0==100) ) {
+                        alt27=1;
+                    }
+                    switch (alt27) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1918:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1918:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1919:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1919:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1920:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue3887);
+                            lv_elements_3_0=ruleXAnnotationOrExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"elements",
+                                      		lv_elements_3_0, 
+                                      		"XAnnotationOrExpression");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1936:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop26:
+                            do {
+                                int alt26=2;
+                                int LA26_0 = input.LA(1);
+
+                                if ( (LA26_0==27) ) {
+                                    alt26=1;
+                                }
+
+
+                                switch (alt26) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1936:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleXAnnotationElementValue3900); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1940:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1941:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1941:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1942:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue3921);
+                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elements",
+                            	              		lv_elements_5_0, 
+                            	              		"XAnnotationOrExpression");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop26;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,38,FOLLOW_38_in_ruleXAnnotationElementValue3937); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1964:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue3966);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotationOrExpression_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValue"
+
+
+    // $ANTLR start "entryRuleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1980:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationOrExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1981:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1982:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression4001);
+            iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationOrExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression4011); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationOrExpression"
+
+
+    // $ANTLR start "ruleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1989:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAnnotation_0 = null;
+
+        EObject this_XExpression_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1992:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1993:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1993:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==34) ) {
+                alt29=1;
+            }
+            else if ( ((LA29_0>=RULE_ID && LA29_0<=RULE_DECIMAL)||LA29_0==14||LA29_0==26||(LA29_0>=36 && LA29_0<=37)||LA29_0==44||(LA29_0>=60 && LA29_0<=61)||LA29_0==66||LA29_0==75||LA29_0==77||(LA29_0>=81 && LA29_0<=83)||(LA29_0>=86 && LA29_0<=98)||LA29_0==100) ) {
+                alt29=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 29, 0, input);
+
+                throw nvae;
+            }
+            switch (alt29) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:1994:5: this_XAnnotation_0= ruleXAnnotation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression4058);
+                    this_XAnnotation_0=ruleXAnnotation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotation_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2004:5: this_XExpression_1= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression4085);
+                    this_XExpression_1=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XExpression_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationOrExpression"
+
+
+    // $ANTLR start "entryRuleXExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2020:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    public final EObject entryRuleXExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2021:2: (iv_ruleXExpression= ruleXExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2022:2: iv_ruleXExpression= ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression4120);
+            iv_ruleXExpression=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression4130); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXExpression"
+
+
+    // $ANTLR start "ruleXExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2029:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    public final EObject ruleXExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAssignment_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2032:28: (this_XAssignment_0= ruleXAssignment )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2034:5: this_XAssignment_0= ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression4176);
+            this_XAssignment_0=ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAssignment_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpression"
+
+
+    // $ANTLR start "entryRuleXAssignment"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2050:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    public final EObject entryRuleXAssignment() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAssignment = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2051:2: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2052:2: iv_ruleXAssignment= ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment4210);
+            iv_ruleXAssignment=ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAssignment; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment4220); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAssignment"
+
+
+    // $ANTLR start "ruleXAssignment"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2059:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    public final EObject ruleXAssignment() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_value_3_0 = null;
+
+        EObject this_XOrExpression_4 = null;
+
+        EObject lv_rightOperand_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2062:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2063:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2063:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt31=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA31_1 = input.LA(2);
+
+                if ( (LA31_1==EOF||(LA31_1>=RULE_ID && LA31_1<=RULE_DECIMAL)||(LA31_1>=14 && LA31_1<=15)||(LA31_1>=26 && LA31_1<=28)||(LA31_1>=36 && LA31_1<=72)||(LA31_1>=74 && LA31_1<=101)) ) {
+                    alt31=2;
+                }
+                else if ( (LA31_1==35) ) {
+                    alt31=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 31, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 86:
+                {
+                int LA31_2 = input.LA(2);
+
+                if ( (LA31_2==EOF||(LA31_2>=RULE_ID && LA31_2<=RULE_DECIMAL)||(LA31_2>=14 && LA31_2<=15)||(LA31_2>=26 && LA31_2<=28)||(LA31_2>=36 && LA31_2<=72)||(LA31_2>=74 && LA31_2<=101)) ) {
+                    alt31=2;
+                }
+                else if ( (LA31_2==35) ) {
+                    alt31=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 31, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 87:
+                {
+                int LA31_3 = input.LA(2);
+
+                if ( (LA31_3==35) ) {
+                    alt31=1;
+                }
+                else if ( (LA31_3==EOF||(LA31_3>=RULE_ID && LA31_3<=RULE_DECIMAL)||(LA31_3>=14 && LA31_3<=15)||(LA31_3>=26 && LA31_3<=28)||(LA31_3>=36 && LA31_3<=72)||(LA31_3>=74 && LA31_3<=101)) ) {
+                    alt31=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 31, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 88:
+                {
+                int LA31_4 = input.LA(2);
+
+                if ( (LA31_4==35) ) {
+                    alt31=1;
+                }
+                else if ( (LA31_4==EOF||(LA31_4>=RULE_ID && LA31_4<=RULE_DECIMAL)||(LA31_4>=14 && LA31_4<=15)||(LA31_4>=26 && LA31_4<=28)||(LA31_4>=36 && LA31_4<=72)||(LA31_4>=74 && LA31_4<=101)) ) {
+                    alt31=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 31, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 89:
+                {
+                int LA31_5 = input.LA(2);
+
+                if ( (LA31_5==EOF||(LA31_5>=RULE_ID && LA31_5<=RULE_DECIMAL)||(LA31_5>=14 && LA31_5<=15)||(LA31_5>=26 && LA31_5<=28)||(LA31_5>=36 && LA31_5<=72)||(LA31_5>=74 && LA31_5<=101)) ) {
+                    alt31=2;
+                }
+                else if ( (LA31_5==35) ) {
+                    alt31=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 31, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case 14:
+            case 26:
+            case 36:
+            case 37:
+            case 44:
+            case 60:
+            case 61:
+            case 66:
+            case 75:
+            case 77:
+            case 81:
+            case 82:
+            case 83:
+            case 90:
+            case 91:
+            case 92:
+            case 93:
+            case 94:
+            case 95:
+            case 96:
+            case 97:
+            case 98:
+            case 100:
+                {
+                alt31=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 31, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt31) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2063:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2063:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2063:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2063:3: ()
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2064:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2069:2: ( ( ruleFeatureCallID ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2070:1: ( ruleFeatureCallID )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2070:1: ( ruleFeatureCallID )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2071:3: ruleFeatureCallID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXAssignment4278);
+                    ruleFeatureCallID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment4294);
+                    ruleOpSingleAssign();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2092:1: ( (lv_value_3_0= ruleXAssignment ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2093:1: (lv_value_3_0= ruleXAssignment )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2093:1: (lv_value_3_0= ruleXAssignment )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2094:3: lv_value_3_0= ruleXAssignment
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4314);
+                    lv_value_3_0=ruleXAssignment();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"value",
+                              		lv_value_3_0, 
+                              		"XAssignment");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2111:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2111:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2112:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment4344);
+                    this_XOrExpression_4=ruleXOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XOrExpression_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2120:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt30=2;
+                    alt30 = dfa30.predict(input);
+                    switch (alt30) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2120:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2120:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2120:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2125:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2125:7: () ( ( ruleOpMultiAssign ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2125:7: ()
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2126:5: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                                      current = forceCreateModelElementAndSet(
+                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+                                          current);
+                                  
+                            }
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2131:2: ( ( ruleOpMultiAssign ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2132:1: ( ruleOpMultiAssign )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2132:1: ( ruleOpMultiAssign )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2133:3: ruleOpMultiAssign
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment4397);
+                            ruleOpMultiAssign();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2146:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2147:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2147:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2148:3: lv_rightOperand_7_0= ruleXAssignment
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4420);
+                            lv_rightOperand_7_0=ruleXAssignment();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"rightOperand",
+                                      		lv_rightOperand_7_0, 
+                                      		"XAssignment");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAssignment"
+
+
+    // $ANTLR start "entryRuleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2172:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    public final String entryRuleOpSingleAssign() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2173:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2174:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4460);
+            iv_ruleOpSingleAssign=ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpSingleAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign4471); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2181:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2184:28: (kw= '=' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2186:2: kw= '='
+            {
+            kw=(Token)match(input,35,FOLLOW_35_in_ruleOpSingleAssign4508); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                      current.merge(kw);
+                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpSingleAssign"
+
+
+    // $ANTLR start "entryRuleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2199:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    public final String entryRuleOpMultiAssign() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2200:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2201:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4548);
+            iv_ruleOpMultiAssign=ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMultiAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign4559); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2208:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2211:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2212:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2212:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt33=7;
+            switch ( input.LA(1) ) {
+            case 39:
+                {
+                alt33=1;
+                }
+                break;
+            case 40:
+                {
+                alt33=2;
+                }
+                break;
+            case 41:
+                {
+                alt33=3;
+                }
+                break;
+            case 42:
+                {
+                alt33=4;
+                }
+                break;
+            case 43:
+                {
+                alt33=5;
+                }
+                break;
+            case 44:
+                {
+                alt33=6;
+                }
+                break;
+            case 45:
+                {
+                alt33=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 33, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt33) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2213:2: kw= '+='
+                    {
+                    kw=(Token)match(input,39,FOLLOW_39_in_ruleOpMultiAssign4597); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2220:2: kw= '-='
+                    {
+                    kw=(Token)match(input,40,FOLLOW_40_in_ruleOpMultiAssign4616); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2227:2: kw= '*='
+                    {
+                    kw=(Token)match(input,41,FOLLOW_41_in_ruleOpMultiAssign4635); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2234:2: kw= '/='
+                    {
+                    kw=(Token)match(input,42,FOLLOW_42_in_ruleOpMultiAssign4654); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2241:2: kw= '%='
+                    {
+                    kw=(Token)match(input,43,FOLLOW_43_in_ruleOpMultiAssign4673); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2247:6: (kw= '<' kw= '<' kw= '=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2247:6: (kw= '<' kw= '<' kw= '=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2248:2: kw= '<' kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpMultiAssign4693); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+                          
+                    }
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpMultiAssign4706); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+                          
+                    }
+                    kw=(Token)match(input,35,FOLLOW_35_in_ruleOpMultiAssign4719); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2266:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2266:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2267:2: kw= '>' (kw= '>' )? kw= '>='
+                    {
+                    kw=(Token)match(input,45,FOLLOW_45_in_ruleOpMultiAssign4740); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2272:1: (kw= '>' )?
+                    int alt32=2;
+                    int LA32_0 = input.LA(1);
+
+                    if ( (LA32_0==45) ) {
+                        alt32=1;
+                    }
+                    switch (alt32) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2273:2: kw= '>'
+                            {
+                            kw=(Token)match(input,45,FOLLOW_45_in_ruleOpMultiAssign4754); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    kw=(Token)match(input,46,FOLLOW_46_in_ruleOpMultiAssign4769); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpMultiAssign"
+
+
+    // $ANTLR start "entryRuleXOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2292:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    public final EObject entryRuleXOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOrExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2293:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2294:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression4810);
+            iv_ruleXOrExpression=ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOrExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression4820); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXOrExpression"
+
+
+    // $ANTLR start "ruleXOrExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2301:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    public final EObject ruleXOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAndExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2304:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2305:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2305:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2306:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression4867);
+            this_XAndExpression_0=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAndExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2314:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop34:
+            do {
+                int alt34=2;
+                int LA34_0 = input.LA(1);
+
+                if ( (LA34_0==47) ) {
+                    int LA34_2 = input.LA(2);
+
+                    if ( (synpred8_InternalFunctionLibraryDsl()) ) {
+                        alt34=1;
+                    }
+
+
+                }
+
+
+                switch (alt34) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2314:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2314:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2314:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2319:6: ( () ( ( ruleOpOr ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2319:7: () ( ( ruleOpOr ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2319:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2320:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2325:2: ( ( ruleOpOr ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2326:1: ( ruleOpOr )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2326:1: ( ruleOpOr )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2327:3: ruleOpOr
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXOrExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpOr_in_ruleXOrExpression4920);
+            	    ruleOpOr();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2340:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2341:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2341:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2342:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression4943);
+            	    lv_rightOperand_3_0=ruleXAndExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XAndExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop34;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXOrExpression"
+
+
+    // $ANTLR start "entryRuleOpOr"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2366:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    public final String entryRuleOpOr() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpOr = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2367:2: (iv_ruleOpOr= ruleOpOr EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2368:2: iv_ruleOpOr= ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr4982);
+            iv_ruleOpOr=ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOr.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr4993); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2375:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2378:28: (kw= '||' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2380:2: kw= '||'
+            {
+            kw=(Token)match(input,47,FOLLOW_47_in_ruleOpOr5030); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                      current.merge(kw);
+                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpOr"
+
+
+    // $ANTLR start "entryRuleXAndExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2393:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    public final EObject entryRuleXAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAndExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2394:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2395:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression5069);
+            iv_ruleXAndExpression=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAndExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression5079); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2402:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    public final EObject ruleXAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XEqualityExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2405:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2406:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2406:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2407:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5126);
+            this_XEqualityExpression_0=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XEqualityExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2415:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop35:
+            do {
+                int alt35=2;
+                int LA35_0 = input.LA(1);
+
+                if ( (LA35_0==48) ) {
+                    int LA35_2 = input.LA(2);
+
+                    if ( (synpred9_InternalFunctionLibraryDsl()) ) {
+                        alt35=1;
+                    }
+
+
+                }
+
+
+                switch (alt35) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2415:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2415:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2415:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2420:6: ( () ( ( ruleOpAnd ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2420:7: () ( ( ruleOpAnd ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2420:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2421:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2426:2: ( ( ruleOpAnd ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2427:1: ( ruleOpAnd )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2427:1: ( ruleOpAnd )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2428:3: ruleOpAnd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression5179);
+            	    ruleOpAnd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2441:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2442:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2442:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2443:3: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5202);
+            	    lv_rightOperand_3_0=ruleXEqualityExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XEqualityExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop35;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2467:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2468:2: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2469:2: iv_ruleOpAnd= ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd5241);
+            iv_ruleOpAnd=ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAnd.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd5252); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2476:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2479:28: (kw= '&&' )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2481:2: kw= '&&'
+            {
+            kw=(Token)match(input,48,FOLLOW_48_in_ruleOpAnd5289); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                      current.merge(kw);
+                      newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2494:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXEqualityExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2495:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2496:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5328);
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXEqualityExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression5338); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2503:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    public final EObject ruleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XRelationalExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2506:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2507:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2507:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2508:5: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5385);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XRelationalExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2516:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop36:
+            do {
+                int alt36=2;
+                switch ( input.LA(1) ) {
+                case 49:
+                    {
+                    int LA36_2 = input.LA(2);
+
+                    if ( (synpred10_InternalFunctionLibraryDsl()) ) {
+                        alt36=1;
+                    }
+
+
+                    }
+                    break;
+                case 50:
+                    {
+                    int LA36_3 = input.LA(2);
+
+                    if ( (synpred10_InternalFunctionLibraryDsl()) ) {
+                        alt36=1;
+                    }
+
+
+                    }
+                    break;
+                case 51:
+                    {
+                    int LA36_4 = input.LA(2);
+
+                    if ( (synpred10_InternalFunctionLibraryDsl()) ) {
+                        alt36=1;
+                    }
+
+
+                    }
+                    break;
+                case 52:
+                    {
+                    int LA36_5 = input.LA(2);
+
+                    if ( (synpred10_InternalFunctionLibraryDsl()) ) {
+                        alt36=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt36) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2516:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2516:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2516:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2521:6: ( () ( ( ruleOpEquality ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2521:7: () ( ( ruleOpEquality ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2521:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2522:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2527:2: ( ( ruleOpEquality ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2528:1: ( ruleOpEquality )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2528:1: ( ruleOpEquality )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2529:3: ruleOpEquality
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpEquality_in_ruleXEqualityExpression5438);
+            	    ruleOpEquality();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2542:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2543:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2543:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2544:3: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5461);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XRelationalExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop36;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2568:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2569:2: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2570:2: iv_ruleOpEquality= ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality5500);
+            iv_ruleOpEquality=ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpEquality.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality5511); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2577:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2580:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2581:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2581:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt37=4;
+            switch ( input.LA(1) ) {
+            case 49:
+                {
+                alt37=1;
+                }
+                break;
+            case 50:
+                {
+                alt37=2;
+                }
+                break;
+            case 51:
+                {
+                alt37=3;
+                }
+                break;
+            case 52:
+                {
+                alt37=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 37, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt37) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2582:2: kw= '=='
+                    {
+                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpEquality5549); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2589:2: kw= '!='
+                    {
+                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpEquality5568); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2596:2: kw= '==='
+                    {
+                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpEquality5587); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2603:2: kw= '!=='
+                    {
+                    kw=(Token)match(input,52,FOLLOW_52_in_ruleOpEquality5606); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2616:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXRelationalExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2617:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2618:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression5646);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXRelationalExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression5656); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2625:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    public final EObject ruleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XOtherOperatorExpression_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+        EObject lv_rightOperand_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2628:28: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2629:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2629:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2630:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5703);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XOtherOperatorExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2638:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop38:
+            do {
+                int alt38=3;
+                switch ( input.LA(1) ) {
+                case 44:
+                    {
+                    int LA38_2 = input.LA(2);
+
+                    if ( (synpred12_InternalFunctionLibraryDsl()) ) {
+                        alt38=2;
+                    }
+
+
+                    }
+                    break;
+                case 45:
+                    {
+                    int LA38_3 = input.LA(2);
+
+                    if ( (synpred12_InternalFunctionLibraryDsl()) ) {
+                        alt38=2;
+                    }
+
+
+                    }
+                    break;
+                case 53:
+                    {
+                    int LA38_4 = input.LA(2);
+
+                    if ( (synpred11_InternalFunctionLibraryDsl()) ) {
+                        alt38=1;
+                    }
+
+
+                    }
+                    break;
+                case 46:
+                    {
+                    int LA38_5 = input.LA(2);
+
+                    if ( (synpred12_InternalFunctionLibraryDsl()) ) {
+                        alt38=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt38) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2638:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2638:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2638:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2638:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2638:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2640:5: ( () otherlv_2= 'instanceof' )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2640:6: () otherlv_2= 'instanceof'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2640:6: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2641:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,53,FOLLOW_53_in_ruleXRelationalExpression5739); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2650:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2651:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2651:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2652:3: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression5762);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"type",
+            	              		lv_type_3_0, 
+            	              		"JvmTypeReference");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2669:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2669:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2669:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2669:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2669:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2674:6: ( () ( ( ruleOpCompare ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2674:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2674:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2675:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2680:2: ( ( ruleOpCompare ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2681:1: ( ruleOpCompare )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2681:1: ( ruleOpCompare )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2682:3: ruleOpCompare
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpCompare_in_ruleXRelationalExpression5823);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2695:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2696:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2696:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2697:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5846);
+            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_6_0, 
+            	              		"XOtherOperatorExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop38;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2721:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    public final String entryRuleOpCompare() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2722:2: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2723:2: iv_ruleOpCompare= ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare5886);
+            iv_ruleOpCompare=ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpCompare.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare5897); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2730:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2733:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2734:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2734:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt39=4;
+            switch ( input.LA(1) ) {
+            case 46:
+                {
+                alt39=1;
+                }
+                break;
+            case 44:
+                {
+                int LA39_2 = input.LA(2);
+
+                if ( (LA39_2==EOF||(LA39_2>=RULE_ID && LA39_2<=RULE_DECIMAL)||LA39_2==14||LA39_2==26||(LA39_2>=36 && LA39_2<=37)||LA39_2==44||(LA39_2>=60 && LA39_2<=61)||LA39_2==66||LA39_2==75||LA39_2==77||(LA39_2>=81 && LA39_2<=83)||(LA39_2>=86 && LA39_2<=98)||LA39_2==100) ) {
+                    alt39=4;
+                }
+                else if ( (LA39_2==35) ) {
+                    alt39=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 39, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 45:
+                {
+                alt39=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 39, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt39) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2735:2: kw= '>='
+                    {
+                    kw=(Token)match(input,46,FOLLOW_46_in_ruleOpCompare5935); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2741:6: (kw= '<' kw= '=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2741:6: (kw= '<' kw= '=' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2742:2: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpCompare5955); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+                          
+                    }
+                    kw=(Token)match(input,35,FOLLOW_35_in_ruleOpCompare5968); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2755:2: kw= '>'
+                    {
+                    kw=(Token)match(input,45,FOLLOW_45_in_ruleOpCompare5988); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2762:2: kw= '<'
+                    {
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpCompare6007); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpCompare"
+
+
+    // $ANTLR start "entryRuleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2775:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOtherOperatorExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2776:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2777:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression6047);
+            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOtherOperatorExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression6057); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2784:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAdditiveExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2787:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2788:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2788:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2789:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6104);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAdditiveExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2797:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop40:
+            do {
+                int alt40=2;
+                alt40 = dfa40.predict(input);
+                switch (alt40) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2797:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2797:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2797:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2802:6: ( () ( ( ruleOpOther ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2802:7: () ( ( ruleOpOther ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2802:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2803:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2808:2: ( ( ruleOpOther ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2809:1: ( ruleOpOther )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2809:1: ( ruleOpOther )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2810:3: ruleOpOther
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression6157);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2823:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2824:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2824:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2825:3: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6180);
+            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XAdditiveExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop40;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXOtherOperatorExpression"
+
+
+    // $ANTLR start "entryRuleOpOther"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2849:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    public final String entryRuleOpOther() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpOther = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2850:2: (iv_ruleOpOther= ruleOpOther EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2851:2: iv_ruleOpOther= ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther6219);
+            iv_ruleOpOther=ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOther.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther6230); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpOther"
+
+
+    // $ANTLR start "ruleOpOther"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2858:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2861:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2862:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2862:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt43=9;
+            alt43 = dfa43.predict(input);
+            switch (alt43) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2863:2: kw= '->'
+                    {
+                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6268); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2870:2: kw= '..<'
+                    {
+                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpOther6287); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2876:6: (kw= '>' kw= '..' )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2876:6: (kw= '>' kw= '..' )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2877:2: kw= '>' kw= '..'
+                    {
+                    kw=(Token)match(input,45,FOLLOW_45_in_ruleOpOther6307); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+                          
+                    }
+                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOther6320); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2890:2: kw= '..'
+                    {
+                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOther6340); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2897:2: kw= '=>'
+                    {
+                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpOther6359); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2903:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2903:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2904:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    {
+                    kw=(Token)match(input,45,FOLLOW_45_in_ruleOpOther6379); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2909:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt41=2;
+                    int LA41_0 = input.LA(1);
+
+                    if ( (LA41_0==45) ) {
+                        int LA41_1 = input.LA(2);
+
+                        if ( (LA41_1==EOF||(LA41_1>=RULE_ID && LA41_1<=RULE_DECIMAL)||LA41_1==14||LA41_1==26||(LA41_1>=36 && LA41_1<=37)||LA41_1==44||(LA41_1>=60 && LA41_1<=61)||LA41_1==66||LA41_1==75||LA41_1==77||(LA41_1>=81 && LA41_1<=83)||(LA41_1>=86 && LA41_1<=98)||LA41_1==100) ) {
+                            alt41=2;
+                        }
+                        else if ( (LA41_1==45) && (synpred14_InternalFunctionLibraryDsl())) {
+                            alt41=1;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return current;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 41, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 41, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt41) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2909:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2909:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2909:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2913:5: (kw= '>' kw= '>' )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2914:2: kw= '>' kw= '>'
+                            {
+                            kw=(Token)match(input,45,FOLLOW_45_in_ruleOpOther6410); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+                                  
+                            }
+                            kw=(Token)match(input,45,FOLLOW_45_in_ruleOpOther6423); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+                                  
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2927:2: kw= '>'
+                            {
+                            kw=(Token)match(input,45,FOLLOW_45_in_ruleOpOther6444); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2933:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2933:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2934:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    {
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther6466); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2939:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt42=3;
+                    int LA42_0 = input.LA(1);
+
+                    if ( (LA42_0==44) ) {
+                        int LA42_1 = input.LA(2);
+
+                        if ( (synpred15_InternalFunctionLibraryDsl()) ) {
+                            alt42=1;
+                        }
+                        else if ( (true) ) {
+                            alt42=2;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return current;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 42, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else if ( (LA42_0==57) ) {
+                        alt42=3;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 42, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt42) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2939:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2939:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2939:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            {
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2943:5: (kw= '<' kw= '<' )
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2944:2: kw= '<' kw= '<'
+                            {
+                            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther6497); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+                                  
+                            }
+                            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther6510); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+                                  
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2957:2: kw= '<'
+                            {
+                            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpOther6531); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+                        case 3 :
+                            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2964:2: kw= '=>'
+                            {
+                            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpOther6550); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2971:2: kw= '<>'
+                    {
+                    kw=(Token)match(input,58,FOLLOW_58_in_ruleOpOther6571); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2978:2: kw= '?:'
+                    {
+                    kw=(Token)match(input,59,FOLLOW_59_in_ruleOpOther6590); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpOther"
+
+
+    // $ANTLR start "entryRuleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2991:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAdditiveExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2992:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:2993:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression6630);
+            iv_ruleXAdditiveExpression=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAdditiveExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression6640); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3000:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    public final EObject ruleXAdditiveExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XMultiplicativeExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3003:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3004:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3004:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3005:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6687);
+            this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XMultiplicativeExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3013:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop44:
+            do {
+                int alt44=2;
+                int LA44_0 = input.LA(1);
+
+                if ( (LA44_0==60) ) {
+                    int LA44_2 = input.LA(2);
+
+                    if ( (synpred16_InternalFunctionLibraryDsl()) ) {
+                        alt44=1;
+                    }
+
+
+                }
+                else if ( (LA44_0==61) ) {
+                    int LA44_3 = input.LA(2);
+
+                    if ( (synpred16_InternalFunctionLibraryDsl()) ) {
+                        alt44=1;
+                    }
+
+
+                }
+
+
+                switch (alt44) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3013:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3013:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3013:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3018:6: ( () ( ( ruleOpAdd ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3018:7: () ( ( ruleOpAdd ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3018:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3019:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3024:2: ( ( ruleOpAdd ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3025:1: ( ruleOpAdd )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3025:1: ( ruleOpAdd )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3026:3: ruleOpAdd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression6740);
+            	    ruleOpAdd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3039:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3040:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3040:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3041:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6763);
+            	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XMultiplicativeExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop44;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAdditiveExpression"
+
+
+    // $ANTLR start "entryRuleOpAdd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3065:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    public final String entryRuleOpAdd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAdd = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3066:2: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3067:2: iv_ruleOpAdd= ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd6802);
+            iv_ruleOpAdd=ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAdd.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd6813); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3074:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3077:28: ( (kw= '+' | kw= '-' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3078:1: (kw= '+' | kw= '-' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3078:1: (kw= '+' | kw= '-' )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==60) ) {
+                alt45=1;
+            }
+            else if ( (LA45_0==61) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3079:2: kw= '+'
+                    {
+                    kw=(Token)match(input,60,FOLLOW_60_in_ruleOpAdd6851); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3086:2: kw= '-'
+                    {
+                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpAdd6870); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpAdd"
+
+
+    // $ANTLR start "entryRuleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3099:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXMultiplicativeExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3100:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3101:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression6910);
+            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXMultiplicativeExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression6920); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3108:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XUnaryOperation_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3111:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3112:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3112:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3113:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6967);
+            this_XUnaryOperation_0=ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XUnaryOperation_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3121:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop46:
+            do {
+                int alt46=2;
+                switch ( input.LA(1) ) {
+                case 62:
+                    {
+                    int LA46_2 = input.LA(2);
+
+                    if ( (synpred17_InternalFunctionLibraryDsl()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+                case 63:
+                    {
+                    int LA46_3 = input.LA(2);
+
+                    if ( (synpred17_InternalFunctionLibraryDsl()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+                case 64:
+                    {
+                    int LA46_4 = input.LA(2);
+
+                    if ( (synpred17_InternalFunctionLibraryDsl()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+                case 65:
+                    {
+                    int LA46_5 = input.LA(2);
+
+                    if ( (synpred17_InternalFunctionLibraryDsl()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt46) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3121:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3121:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3121:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3126:6: ( () ( ( ruleOpMulti ) ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3126:7: () ( ( ruleOpMulti ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3126:7: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3127:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3132:2: ( ( ruleOpMulti ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3133:1: ( ruleOpMulti )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3133:1: ( ruleOpMulti )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3134:3: ruleOpMulti
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression7020);
+            	    ruleOpMulti();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3147:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3148:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3148:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3149:3: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression7043);
+            	    lv_rightOperand_3_0=ruleXUnaryOperation();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XUnaryOperation");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop46;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3173:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    public final String entryRuleOpMulti() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMulti = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3174:2: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3175:2: iv_ruleOpMulti= ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti7082);
+            iv_ruleOpMulti=ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMulti.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti7093); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3182:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3185:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3186:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3186:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt47=4;
+            switch ( input.LA(1) ) {
+            case 62:
+                {
+                alt47=1;
+                }
+                break;
+            case 63:
+                {
+                alt47=2;
+                }
+                break;
+            case 64:
+                {
+                alt47=3;
+                }
+                break;
+            case 65:
+                {
+                alt47=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt47) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3187:2: kw= '*'
+                    {
+                    kw=(Token)match(input,62,FOLLOW_62_in_ruleOpMulti7131); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3194:2: kw= '**'
+                    {
+                    kw=(Token)match(input,63,FOLLOW_63_in_ruleOpMulti7150); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3201:2: kw= '/'
+                    {
+                    kw=(Token)match(input,64,FOLLOW_64_in_ruleOpMulti7169); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3208:2: kw= '%'
+                    {
+                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpMulti7188); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpMulti"
+
+
+    // $ANTLR start "entryRuleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3221:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXUnaryOperation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3222:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3223:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation7228);
+            iv_ruleXUnaryOperation=ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXUnaryOperation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation7238); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3230:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    public final EObject ruleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_operand_2_0 = null;
+
+        EObject this_XCastedExpression_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3233:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3234:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3234:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+
+            if ( ((LA48_0>=60 && LA48_0<=61)||LA48_0==66) ) {
+                alt48=1;
+            }
+            else if ( ((LA48_0>=RULE_ID && LA48_0<=RULE_DECIMAL)||LA48_0==14||LA48_0==26||(LA48_0>=36 && LA48_0<=37)||LA48_0==44||LA48_0==75||LA48_0==77||(LA48_0>=81 && LA48_0<=83)||(LA48_0>=86 && LA48_0<=98)||LA48_0==100) ) {
+                alt48=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 48, 0, input);
+
+                throw nvae;
+            }
+            switch (alt48) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3234:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3234:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3234:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3234:3: ()
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3235:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3240:2: ( ( ruleOpUnary ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3241:1: ( ruleOpUnary )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3241:1: ( ruleOpUnary )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3242:3: ruleOpUnary
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation7296);
+                    ruleOpUnary();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3255:2: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3256:1: (lv_operand_2_0= ruleXUnaryOperation )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3256:1: (lv_operand_2_0= ruleXUnaryOperation )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3257:3: lv_operand_2_0= ruleXUnaryOperation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation7317);
+                    lv_operand_2_0=ruleXUnaryOperation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"operand",
+                              		lv_operand_2_0, 
+                              		"XUnaryOperation");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3275:5: this_XCastedExpression_3= ruleXCastedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7346);
+                    this_XCastedExpression_3=ruleXCastedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XCastedExpression_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXUnaryOperation"
+
+
+    // $ANTLR start "entryRuleOpUnary"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3291:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    public final String entryRuleOpUnary() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpUnary = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3292:2: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3293:2: iv_ruleOpUnary= ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary7382);
+            iv_ruleOpUnary=ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpUnary.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary7393); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3300:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3303:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3304:1: (kw= '!' | kw= '-' | kw= '+' )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3304:1: (kw= '!' | kw= '-' | kw= '+' )
+            int alt49=3;
+            switch ( input.LA(1) ) {
+            case 66:
+                {
+                alt49=1;
+                }
+                break;
+            case 61:
+                {
+                alt49=2;
+                }
+                break;
+            case 60:
+                {
+                alt49=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 49, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt49) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3305:2: kw= '!'
+                    {
+                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpUnary7431); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3312:2: kw= '-'
+                    {
+                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpUnary7450); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3319:2: kw= '+'
+                    {
+                    kw=(Token)match(input,60,FOLLOW_60_in_ruleOpUnary7469); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpUnary"
+
+
+    // $ANTLR start "entryRuleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3332:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    public final EObject entryRuleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCastedExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3333:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3334:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7509);
+            iv_ruleXCastedExpression=ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXCastedExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression7519); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3341:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    public final EObject ruleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XPostfixOperation_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3344:28: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3345:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3345:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3346:5: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXPostfixOperation_in_ruleXCastedExpression7566);
+            this_XPostfixOperation_0=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XPostfixOperation_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3354:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop50:
+            do {
+                int alt50=2;
+                int LA50_0 = input.LA(1);
+
+                if ( (LA50_0==67) ) {
+                    int LA50_2 = input.LA(2);
+
+                    if ( (synpred18_InternalFunctionLibraryDsl()) ) {
+                        alt50=1;
+                    }
+
+
+                }
+
+
+                switch (alt50) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3354:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3354:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3354:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3356:5: ( () otherlv_2= 'as' )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3356:6: () otherlv_2= 'as'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3356:6: ()
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3357:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,67,FOLLOW_67_in_ruleXCastedExpression7601); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3366:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3367:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3367:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3368:3: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression7624);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"type",
+            	              		lv_type_3_0, 
+            	              		"JvmTypeReference");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop50;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3392:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    public final EObject entryRuleXPostfixOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPostfixOperation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3393:2: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3394:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation7662);
+            iv_ruleXPostfixOperation=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXPostfixOperation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPostfixOperation7672); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXPostfixOperation"
+
+
+    // $ANTLR start "ruleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3401:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
+    public final EObject ruleXPostfixOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XMemberFeatureCall_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3404:28: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3405:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3405:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3406:5: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_ruleXPostfixOperation7719);
+            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XMemberFeatureCall_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3414:1: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==68) ) {
+                int LA51_1 = input.LA(2);
+
+                if ( (synpred19_InternalFunctionLibraryDsl()) ) {
+                    alt51=1;
+                }
+            }
+            else if ( (LA51_0==69) ) {
+                int LA51_2 = input.LA(2);
+
+                if ( (synpred19_InternalFunctionLibraryDsl()) ) {
+                    alt51=1;
+                }
+            }
+            switch (alt51) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3414:2: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3419:6: ( () ( ( ruleOpPostfix ) ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3419:7: () ( ( ruleOpPostfix ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3419:7: ()
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3420:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3425:2: ( ( ruleOpPostfix ) )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3426:1: ( ruleOpPostfix )
+                    {
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3426:1: ( ruleOpPostfix )
+                    // ../org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/parser/antlr/internal/InternalFunctionLibraryDsl.g:3427:3: ruleOpPostfix
+                    {
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/serializer/FunctionLibraryDslSemanticSequencer.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/serializer/FunctionLibraryDslSemanticSequencer.java
new file mode 100644
index 0000000..5a859dd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/serializer/FunctionLibraryDslSemanticSequencer.java
@@ -0,0 +1,1630 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryStatemachineGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericArrayTypeReference;
+import org.eclipse.xtext.common.types.JvmInnerTypeReference;
+import org.eclipse.xtext.common.types.JvmLowerBound;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmTypeParameter;
+import org.eclipse.xtext.common.types.JvmUpperBound;
+import org.eclipse.xtext.common.types.JvmWildcardTypeReference;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
+import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
+import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
+import org.eclipse.xtext.xbase.XAssignment;
+import org.eclipse.xtext.xbase.XBasicForLoopExpression;
+import org.eclipse.xtext.xbase.XBinaryOperation;
+import org.eclipse.xtext.xbase.XBlockExpression;
+import org.eclipse.xtext.xbase.XBooleanLiteral;
+import org.eclipse.xtext.xbase.XCasePart;
+import org.eclipse.xtext.xbase.XCastedExpression;
+import org.eclipse.xtext.xbase.XCatchClause;
+import org.eclipse.xtext.xbase.XClosure;
+import org.eclipse.xtext.xbase.XConstructorCall;
+import org.eclipse.xtext.xbase.XDoWhileExpression;
+import org.eclipse.xtext.xbase.XFeatureCall;
+import org.eclipse.xtext.xbase.XForLoopExpression;
+import org.eclipse.xtext.xbase.XIfExpression;
+import org.eclipse.xtext.xbase.XInstanceOfExpression;
+import org.eclipse.xtext.xbase.XListLiteral;
+import org.eclipse.xtext.xbase.XMemberFeatureCall;
+import org.eclipse.xtext.xbase.XNullLiteral;
+import org.eclipse.xtext.xbase.XNumberLiteral;
+import org.eclipse.xtext.xbase.XPostfixOperation;
+import org.eclipse.xtext.xbase.XReturnExpression;
+import org.eclipse.xtext.xbase.XSetLiteral;
+import org.eclipse.xtext.xbase.XStringLiteral;
+import org.eclipse.xtext.xbase.XSwitchExpression;
+import org.eclipse.xtext.xbase.XSynchronizedExpression;
+import org.eclipse.xtext.xbase.XThrowExpression;
+import org.eclipse.xtext.xbase.XTryCatchFinallyExpression;
+import org.eclipse.xtext.xbase.XTypeLiteral;
+import org.eclipse.xtext.xbase.XUnaryOperation;
+import org.eclipse.xtext.xbase.XVariableDeclaration;
+import org.eclipse.xtext.xbase.XWhileExpression;
+import org.eclipse.xtext.xbase.XbasePackage;
+import org.eclipse.xtext.xbase.annotations.serializer.XbaseWithAnnotationsSemanticSequencer;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationElementValuePair;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsPackage;
+import org.eclipse.xtext.xtype.XFunctionTypeRef;
+import org.eclipse.xtext.xtype.XImportDeclaration;
+import org.eclipse.xtext.xtype.XImportSection;
+import org.eclipse.xtext.xtype.XtypePackage;
+
+@SuppressWarnings("all")
+public class FunctionLibraryDslSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+
+	@Inject
+	private FunctionLibraryDslGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == FunctionLibraryDSLPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case FunctionLibraryDSLPackage.FUNCTION_CONVERT_TO_MODEL:
+				if(context == grammarAccess.getFunctionConvertToModelRule()) {
+					sequence_FunctionConvertToModel(context, (FunctionConvertToModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_CONVERT_TO_PRESENTATION:
+				if(context == grammarAccess.getFunctionConvertToPresentationRule()) {
+					sequence_FunctionConvertToPresentation(context, (FunctionConvertToPresentation) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_BLIP_GROUP:
+				if(context == grammarAccess.getFunctionLibraryBlipGroupRule()) {
+					sequence_FunctionLibraryBlipGroup(context, (FunctionLibraryBlipGroup) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_CONVERTER_GROUP:
+				if(context == grammarAccess.getFunctionLibraryConverterGroupRule()) {
+					sequence_FunctionLibraryConverterGroup(context, (FunctionLibraryConverterGroup) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_FUNCTION:
+				if(context == grammarAccess.getFunctionLibraryFunctionRule()) {
+					sequence_FunctionLibraryFunction(context, (FunctionLibraryFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GROUP:
+				if(context == grammarAccess.getFunctionLibraryGroupRule()) {
+					sequence_FunctionLibraryGroup(context, (FunctionLibraryGroup) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_GUARD:
+				if(context == grammarAccess.getFunctionLibraryGuardRule()) {
+					sequence_FunctionLibraryGuard(context, (FunctionLibraryGuard) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_MODEL:
+				if(context == grammarAccess.getFunctionLibraryModelRule()) {
+					sequence_FunctionLibraryModel(context, (FunctionLibraryModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_OPERATION:
+				if(context == grammarAccess.getFunctionLibraryOperationRule()) {
+					sequence_FunctionLibraryOperation(context, (FunctionLibraryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PACKAGE:
+				if(context == grammarAccess.getFunctionLibraryPackageRule()) {
+					sequence_FunctionLibraryPackage(context, (FunctionLibraryPackage) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_PARAMETER:
+				if(context == grammarAccess.getFunctionLibraryParameterRule()) {
+					sequence_FunctionLibraryParameter(context, (FunctionLibraryParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATE:
+				if(context == grammarAccess.getFunctionLibraryRateRule()) {
+					sequence_FunctionLibraryRate(context, (FunctionLibraryRate) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING:
+				if(context == grammarAccess.getFunctionLibraryRatingRule()) {
+					sequence_FunctionLibraryRating(context, (FunctionLibraryRating) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_RATING_ITEM:
+				if(context == grammarAccess.getFunctionLibraryRatingItemRule()) {
+					sequence_FunctionLibraryRatingItem(context, (FunctionLibraryRatingItem) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_STATEMACHINE_GROUP:
+				if(context == grammarAccess.getFunctionLibraryStatemachineGroupRule()) {
+					sequence_FunctionLibraryStatemachineGroup(context, (FunctionLibraryStatemachineGroup) semanticObject); 
+					return; 
+				}
+				else break;
+			case FunctionLibraryDSLPackage.FUNCTION_LIBRARY_TEST:
+				if(context == grammarAccess.getFunctionLibraryTestRule()) {
+					sequence_FunctionLibraryTest(context, (FunctionLibraryTest) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == TypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case TypesPackage.JVM_FORMAL_PARAMETER:
+				if(context == grammarAccess.getFullJvmFormalParameterRule()) {
+					sequence_FullJvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmFormalParameterRule()) {
+					sequence_JvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_GENERIC_ARRAY_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmTypeReference(context, (JvmGenericArrayTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_INNER_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmParameterizedTypeReference(context, (JvmInnerTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_LOWER_BOUND:
+				if(context == grammarAccess.getJvmLowerBoundAndedRule()) {
+					sequence_JvmLowerBoundAnded(context, (JvmLowerBound) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmLowerBoundRule()) {
+					sequence_JvmLowerBound(context, (JvmLowerBound) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_PARAMETERIZED_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmParameterizedTypeReference(context, (JvmParameterizedTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_TYPE_PARAMETER:
+				if(context == grammarAccess.getJvmTypeParameterRule()) {
+					sequence_JvmTypeParameter(context, (JvmTypeParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_UPPER_BOUND:
+				if(context == grammarAccess.getJvmUpperBoundAndedRule()) {
+					sequence_JvmUpperBoundAnded(context, (JvmUpperBound) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmUpperBoundRule()) {
+					sequence_JvmUpperBound(context, (JvmUpperBound) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_WILDCARD_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmWildcardTypeReferenceRule()) {
+					sequence_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XAnnotationsPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XAnnotationsPackage.XANNOTATION:
+				if(context == grammarAccess.getXAnnotationRule() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule()) {
+					sequence_XAnnotation(context, (XAnnotation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XAnnotationsPackage.XANNOTATION_ELEMENT_VALUE_PAIR:
+				if(context == grammarAccess.getXAnnotationElementValuePairRule()) {
+					sequence_XAnnotationElementValuePair(context, (XAnnotationElementValuePair) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XbasePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XbasePackage.XASSIGNMENT:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XAssignment_XMemberFeatureCall(context, (XAssignment) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBASIC_FOR_LOOP_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBasicForLoopExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBasicForLoopExpression(context, (XBasicForLoopExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBINARY_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XAdditiveExpression_XAndExpression_XAssignment_XEqualityExpression_XMultiplicativeExpression_XOrExpression_XOtherOperatorExpression_XRelationalExpression(context, (XBinaryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBLOCK_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBlockExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBlockExpression(context, (XBlockExpression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXExpressionInClosureRule()) {
+					sequence_XExpressionInClosure(context, (XBlockExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBOOLEAN_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBooleanLiteralRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBooleanLiteral(context, (XBooleanLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCASE_PART:
+				if(context == grammarAccess.getXCasePartRule()) {
+					sequence_XCasePart(context, (XCasePart) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCASTED_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XCastedExpression(context, (XCastedExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCATCH_CLAUSE:
+				if(context == grammarAccess.getXCatchClauseRule()) {
+					sequence_XCatchClause(context, (XCatchClause) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCLOSURE:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXClosureRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XClosure(context, (XClosure) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXShortClosureRule()) {
+					sequence_XShortClosure(context, (XClosure) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCONSTRUCTOR_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXConstructorCallRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XConstructorCall(context, (XConstructorCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XDO_WHILE_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXDoWhileExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XDoWhileExpression(context, (XDoWhileExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XFEATURE_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XFeatureCall(context, (XFeatureCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XFOR_LOOP_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXForLoopExpressionRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XForLoopExpression(context, (XForLoopExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XIF_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXIfExpressionRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XIfExpression(context, (XIfExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XINSTANCE_OF_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XRelationalExpression(context, (XInstanceOfExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XLIST_LITERAL:
+				if(context == grammarAccess.getXAnnotationElementValueOrCommaListRule()) {
+					sequence_XAnnotationElementValueOrCommaList_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXAnnotationElementValueRule()) {
+					sequence_XAnnotationElementValue_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXCollectionLiteralRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXListLiteralRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XMEMBER_FEATURE_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XMemberFeatureCall(context, (XMemberFeatureCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XNULL_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXNullLiteralRule() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XNullLiteral(context, (XNullLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XNUMBER_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXNumberLiteralRule() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XNumberLiteral(context, (XNumberLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XPOSTFIX_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XPostfixOperation(context, (XPostfixOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XRETURN_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXReturnExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XReturnExpression(context, (XReturnExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSET_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXCollectionLiteralRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSetLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSetLiteral(context, (XSetLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSTRING_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXStringLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XStringLiteral(context, (XStringLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSWITCH_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSwitchExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSwitchExpression(context, (XSwitchExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSYNCHRONIZED_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSynchronizedExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSynchronizedExpression(context, (XSynchronizedExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTHROW_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXThrowExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XThrowExpression(context, (XThrowExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTRY_CATCH_FINALLY_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXTryCatchFinallyExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XTryCatchFinallyExpression(context, (XTryCatchFinallyExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTYPE_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXTypeLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XTypeLiteral(context, (XTypeLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XUNARY_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XUnaryOperation(context, (XUnaryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XVARIABLE_DECLARATION:
+				if(context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXVariableDeclarationRule()) {
+					sequence_XVariableDeclaration(context, (XVariableDeclaration) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XWHILE_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule() ||
+				   context == grammarAccess.getXWhileExpressionRule()) {
+					sequence_XWhileExpression(context, (XWhileExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XtypePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XtypePackage.XFUNCTION_TYPE_REF:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getXFunctionTypeRefRule()) {
+					sequence_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject); 
+					return; 
+				}
+				else break;
+			case XtypePackage.XIMPORT_DECLARATION:
+				if(context == grammarAccess.getXImportDeclarationRule()) {
+					sequence_XImportDeclaration(context, (XImportDeclaration) semanticObject); 
+					return; 
+				}
+				else break;
+			case XtypePackage.XIMPORT_SECTION:
+				if(context == grammarAccess.getXImportSectionRule()) {
+					sequence_XImportSection(context, (XImportSection) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+	}
+	
+	/**
+	 * Constraint:
+	 *     body=XBlockExpression
+	 */
+	protected void sequence_FunctionConvertToModel(EObject context, FunctionConvertToModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     body=XBlockExpression
+	 */
+	protected void sequence_FunctionConvertToPresentation(EObject context, FunctionConvertToPresentation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (functions+=FunctionLibraryFunction | tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)*)
+	 */
+	protected void sequence_FunctionLibraryBlipGroup(EObject context, FunctionLibraryBlipGroup semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=ValidID 
+	 *         convertToModelDatatype=[LDataType|TYPE_CROSS_REFERENCE] 
+	 *         convertToPresentationDatatype=[LDataType|TYPE_CROSS_REFERENCE] 
+	 *         convertToModel=FunctionConvertToModel 
+	 *         convertToPresentation=FunctionConvertToPresentation
+	 *     )
+	 */
+	protected void sequence_FunctionLibraryConverterGroup(EObject context, FunctionLibraryConverterGroup semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (params+=FunctionLibraryParameter params+=FunctionLibraryParameter*)? oftype=JvmParameterizedTypeReference body=XBlockExpression)
+	 */
+	protected void sequence_FunctionLibraryFunction(EObject context, FunctionLibraryFunction semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (functions+=FunctionLibraryFunction | tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)*)
+	 */
+	protected void sequence_FunctionLibraryGroup(EObject context, FunctionLibraryGroup semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (params+=FunctionLibraryParameter params+=FunctionLibraryParameter*)? body=XBlockExpression)
+	 */
+	protected void sequence_FunctionLibraryGuard(EObject context, FunctionLibraryGuard semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     pckg=FunctionLibraryPackage
+	 */
+	protected void sequence_FunctionLibraryModel(EObject context, FunctionLibraryModel semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_MODEL__PCKG) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_MODEL__PCKG));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getFunctionLibraryModelAccess().getPckgFunctionLibraryPackageParserRuleCall_0(), semanticObject.getPckg());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (params+=FunctionLibraryParameter params+=FunctionLibraryParameter*)? body=XBlockExpression)
+	 */
+	protected void sequence_FunctionLibraryOperation(EObject context, FunctionLibraryOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         importSection=XImportSection? 
+	 *         name=QualifiedName 
+	 *         (
+	 *             groups+=FunctionLibraryGroup | 
+	 *             groups+=FunctionLibraryBlipGroup | 
+	 *             groups+=FunctionLibraryConverterGroup | 
+	 *             groups+=FunctionLibraryStatemachineGroup | 
+	 *             ratings+=FunctionLibraryRating
+	 *         )*
+	 *     )
+	 */
+	protected void sequence_FunctionLibraryPackage(EObject context, FunctionLibraryPackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (parameterType=JvmTypeReference name=ValidID)
+	 */
+	protected void sequence_FunctionLibraryParameter(EObject context, FunctionLibraryParameter semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_PARAMETER__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_PARAMETER__NAME));
+			if(transientValues.isValueTransient(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_PARAMETER__PARAMETER_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getFunctionLibraryParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0(), semanticObject.getParameterType());
+		feeder.accept(grammarAccess.getFunctionLibraryParameterAccess().getNameValidIDParserRuleCall_1_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (params+=FunctionLibraryParameter params+=FunctionLibraryParameter*)? oftype=[FunctionLibraryRating|ID] body=XBlockExpression)
+	 */
+	protected void sequence_FunctionLibraryRate(EObject context, FunctionLibraryRate semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     name=ValidID
+	 */
+	protected void sequence_FunctionLibraryRatingItem(EObject context, FunctionLibraryRatingItem semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_RATING_ITEM__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_RATING_ITEM__NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getFunctionLibraryRatingItemAccess().getNameValidIDParserRuleCall_0(), semanticObject.getName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID items+=FunctionLibraryRatingItem*)
+	 */
+	protected void sequence_FunctionLibraryRating(EObject context, FunctionLibraryRating semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (operations+=FunctionLibraryOperation | guards+=FunctionLibraryGuard | functions+=FunctionLibraryFunction)*)
+	 */
+	protected void sequence_FunctionLibraryStatemachineGroup(EObject context, FunctionLibraryStatemachineGroup semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ValidID (params+=FunctionLibraryParameter params+=FunctionLibraryParameter*)? body=XBlockExpression)
+	 */
+	protected void sequence_FunctionLibraryTest(EObject context, FunctionLibraryTest semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/serializer/FunctionLibraryDslSyntacticSequencer.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/serializer/FunctionLibraryDslSyntacticSequencer.java
new file mode 100644
index 0000000..e11f174
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/serializer/FunctionLibraryDslSyntacticSequencer.java
@@ -0,0 +1,166 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public class FunctionLibraryDslSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected FunctionLibraryDslGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q;
+	protected AbstractElementAlias match_XBlockExpression_SemicolonKeyword_2_1_q;
+	protected AbstractElementAlias match_XExpressionInClosure_SemicolonKeyword_1_1_q;
+	protected AbstractElementAlias match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q;
+	protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
+	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
+	
+	@Inject
+	protected void init(IGrammarAccess access) {
+		grammarAccess = (FunctionLibraryDslGrammarAccess) access;
+		match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()));
+		match_XBlockExpression_SemicolonKeyword_2_1_q = new TokenAlias(false, true, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+		match_XExpressionInClosure_SemicolonKeyword_1_1_q = new TokenAlias(false, true, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+		match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()), new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()));
+		match_XImportDeclaration_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+		match_XParenthesizedExpression_LeftParenthesisKeyword_0_a = new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+		match_XParenthesizedExpression_LeftParenthesisKeyword_0_p = new TokenAlias(true, false, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+	}
+	
+	@Override
+	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if(ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
+			return getArrayBracketsToken(semanticObject, ruleCall, node);
+		else if(ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
+			return getOpSingleAssignToken(semanticObject, ruleCall, node);
+		return "";
+	}
+	
+	/**
+	 * ArrayBrackets :
+	 * 	'[' ']'
+	 * ;
+	 */
+	protected String getArrayBracketsToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "[]";
+	}
+	
+	/**
+	 * OpSingleAssign:
+	 * 	'='
+	 * ;
+	 */
+	protected String getOpSingleAssignToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "=";
+	}
+	
+	@Override
+	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+		List<INode> transitionNodes = collectNodes(fromNode, toNode);
+		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
+			if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
+				emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XBlockExpression_SemicolonKeyword_2_1_q.equals(syntax))
+				emit_XBlockExpression_SemicolonKeyword_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XExpressionInClosure_SemicolonKeyword_1_1_q.equals(syntax))
+				emit_XExpressionInClosure_SemicolonKeyword_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
+				emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XImportDeclaration_SemicolonKeyword_2_q.equals(syntax))
+				emit_XImportDeclaration_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(syntax))
+				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(syntax))
+				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else acceptNodes(getLastNavigableState(), syntaxNodes);
+		}
+	}
+
+	/**
+	 * Syntax:
+	 *     ('(' ')')?
+	 */
+	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' ')')?
+	 */
+	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('*
+	 */
+	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('+
+	 */
+	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/services/FunctionLibraryDslGrammarAccess.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/services/FunctionLibraryDslGrammarAccess.java
new file mode 100644
index 0000000..fffa558
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/services/FunctionLibraryDslGrammarAccess.java
@@ -0,0 +1,2143 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import java.util.List;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.xbase.annotations.services.XbaseWithAnnotationsGrammarAccess;
+import org.eclipse.xtext.xbase.services.XbaseGrammarAccess;
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
+
+@Singleton
+public class FunctionLibraryDslGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class FunctionLibraryModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryModel");
+		private final Assignment cPckgAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPckgFunctionLibraryPackageParserRuleCall_0 = (RuleCall)cPckgAssignment.eContents().get(0);
+		
+		//// ??????????????????????????????????????????????????????????????????????????????????????
+		//// Formelparser aufgrund String siehe JEXL
+		//// - http://commons.apache.org/proper/commons-jexl/reference/examples.html
+		//// - Formel wird als String angegeben
+		//// - wahrscheinlich keine wirkliche syntaktische Prüfung möglich (außer createExpression)
+		//// - Datentypensicherheit wie?
+		//// ??????????????????????????????????????????????????????????????????????????????????????
+		//FunctionLibraryModel:
+		//	pckg=FunctionLibraryPackage;
+		public ParserRule getRule() { return rule; }
+
+		//pckg=FunctionLibraryPackage
+		public Assignment getPckgAssignment() { return cPckgAssignment; }
+
+		//FunctionLibraryPackage
+		public RuleCall getPckgFunctionLibraryPackageParserRuleCall_0() { return cPckgFunctionLibraryPackageParserRuleCall_0; }
+	}
+
+	public class FunctionLibraryPackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryPackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cFunctionLibraryPackageAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cImportSectionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cImportSectionXImportSectionParserRuleCall_1_0 = (RuleCall)cImportSectionAssignment_1.eContents().get(0);
+		private final Keyword cPackageKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cNameQualifiedNameParserRuleCall_3_0 = (RuleCall)cNameAssignment_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
+		private final Assignment cGroupsAssignment_5_0 = (Assignment)cAlternatives_5.eContents().get(0);
+		private final Alternatives cGroupsAlternatives_5_0_0 = (Alternatives)cGroupsAssignment_5_0.eContents().get(0);
+		private final RuleCall cGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0 = (RuleCall)cGroupsAlternatives_5_0_0.eContents().get(0);
+		private final RuleCall cGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1 = (RuleCall)cGroupsAlternatives_5_0_0.eContents().get(1);
+		private final RuleCall cGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2 = (RuleCall)cGroupsAlternatives_5_0_0.eContents().get(2);
+		private final RuleCall cGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3 = (RuleCall)cGroupsAlternatives_5_0_0.eContents().get(3);
+		private final Assignment cRatingsAssignment_5_1 = (Assignment)cAlternatives_5.eContents().get(1);
+		private final RuleCall cRatingsFunctionLibraryRatingParserRuleCall_5_1_0 = (RuleCall)cRatingsAssignment_5_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//FunctionLibraryPackage:
+		//	{FunctionLibraryPackage} importSection=XImportSection? "package" name=QualifiedName "{"
+		//	(groups+=(FunctionLibraryGroup | FunctionLibraryBlipGroup | FunctionLibraryConverterGroup |
+		//	FunctionLibraryStatemachineGroup) | ratings+=FunctionLibraryRating)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//{FunctionLibraryPackage} importSection=XImportSection? "package" name=QualifiedName "{" (groups+=(FunctionLibraryGroup |
+		//FunctionLibraryBlipGroup | FunctionLibraryConverterGroup | FunctionLibraryStatemachineGroup) |
+		//ratings+=FunctionLibraryRating)* "}"
+		public Group getGroup() { return cGroup; }
+
+		//{FunctionLibraryPackage}
+		public Action getFunctionLibraryPackageAction_0() { return cFunctionLibraryPackageAction_0; }
+
+		//importSection=XImportSection?
+		public Assignment getImportSectionAssignment_1() { return cImportSectionAssignment_1; }
+
+		//XImportSection
+		public RuleCall getImportSectionXImportSectionParserRuleCall_1_0() { return cImportSectionXImportSectionParserRuleCall_1_0; }
+
+		//"package"
+		public Keyword getPackageKeyword_2() { return cPackageKeyword_2; }
+
+		//name=QualifiedName
+		public Assignment getNameAssignment_3() { return cNameAssignment_3; }
+
+		//QualifiedName
+		public RuleCall getNameQualifiedNameParserRuleCall_3_0() { return cNameQualifiedNameParserRuleCall_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
+
+		//(groups+=(FunctionLibraryGroup | FunctionLibraryBlipGroup | FunctionLibraryConverterGroup |
+		//FunctionLibraryStatemachineGroup) | ratings+=FunctionLibraryRating)*
+		public Alternatives getAlternatives_5() { return cAlternatives_5; }
+
+		//groups+=(FunctionLibraryGroup | FunctionLibraryBlipGroup | FunctionLibraryConverterGroup |
+		//FunctionLibraryStatemachineGroup)
+		public Assignment getGroupsAssignment_5_0() { return cGroupsAssignment_5_0; }
+
+		//FunctionLibraryGroup | FunctionLibraryBlipGroup | FunctionLibraryConverterGroup | FunctionLibraryStatemachineGroup
+		public Alternatives getGroupsAlternatives_5_0_0() { return cGroupsAlternatives_5_0_0; }
+
+		//FunctionLibraryGroup
+		public RuleCall getGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0() { return cGroupsFunctionLibraryGroupParserRuleCall_5_0_0_0; }
+
+		//FunctionLibraryBlipGroup
+		public RuleCall getGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1() { return cGroupsFunctionLibraryBlipGroupParserRuleCall_5_0_0_1; }
+
+		//FunctionLibraryConverterGroup
+		public RuleCall getGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2() { return cGroupsFunctionLibraryConverterGroupParserRuleCall_5_0_0_2; }
+
+		//FunctionLibraryStatemachineGroup
+		public RuleCall getGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3() { return cGroupsFunctionLibraryStatemachineGroupParserRuleCall_5_0_0_3; }
+
+		//ratings+=FunctionLibraryRating
+		public Assignment getRatingsAssignment_5_1() { return cRatingsAssignment_5_1; }
+
+		//FunctionLibraryRating
+		public RuleCall getRatingsFunctionLibraryRatingParserRuleCall_5_1_0() { return cRatingsFunctionLibraryRatingParserRuleCall_5_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class FunctionLibraryGroupElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryGroup");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cGroupKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
+		private final Assignment cFunctionsAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
+		private final RuleCall cFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0 = (RuleCall)cFunctionsAssignment_3_0.eContents().get(0);
+		private final Assignment cTestsAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
+		private final RuleCall cTestsFunctionLibraryTestParserRuleCall_3_1_0 = (RuleCall)cTestsAssignment_3_1.eContents().get(0);
+		private final Assignment cRatesAssignment_3_2 = (Assignment)cAlternatives_3.eContents().get(2);
+		private final RuleCall cRatesFunctionLibraryRateParserRuleCall_3_2_0 = (RuleCall)cRatesAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		////FunctionLibraryImport:
+		////	'import' importedNamespace=QualifiedNameWithWildcard;
+		//FunctionLibraryGroup:
+		//	"group" name=ValidID "{" (functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+		//	| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"group" name=ValidID "{" (functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+		//| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"group"
+		public Keyword getGroupKeyword_0() { return cGroupKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//(functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+		//| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)*
+		public Alternatives getAlternatives_3() { return cAlternatives_3; }
+
+		//functions+=FunctionLibraryFunction
+		public Assignment getFunctionsAssignment_3_0() { return cFunctionsAssignment_3_0; }
+
+		//FunctionLibraryFunction
+		public RuleCall getFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0() { return cFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0; }
+
+		//tests+=FunctionLibraryTest
+		public Assignment getTestsAssignment_3_1() { return cTestsAssignment_3_1; }
+
+		//FunctionLibraryTest
+		public RuleCall getTestsFunctionLibraryTestParserRuleCall_3_1_0() { return cTestsFunctionLibraryTestParserRuleCall_3_1_0; }
+
+		//rates+=FunctionLibraryRate
+		public Assignment getRatesAssignment_3_2() { return cRatesAssignment_3_2; }
+
+		//FunctionLibraryRate
+		public RuleCall getRatesFunctionLibraryRateParserRuleCall_3_2_0() { return cRatesFunctionLibraryRateParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class FunctionLibraryBlipGroupElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryBlipGroup");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBlipGroupKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
+		private final Assignment cFunctionsAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
+		private final RuleCall cFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0 = (RuleCall)cFunctionsAssignment_3_0.eContents().get(0);
+		private final Assignment cTestsAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
+		private final RuleCall cTestsFunctionLibraryTestParserRuleCall_3_1_0 = (RuleCall)cTestsAssignment_3_1.eContents().get(0);
+		private final Assignment cRatesAssignment_3_2 = (Assignment)cAlternatives_3.eContents().get(2);
+		private final RuleCall cRatesFunctionLibraryRateParserRuleCall_3_2_0 = (RuleCall)cRatesAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//FunctionLibraryBlipGroup:
+		//	"blip-group" name=ValidID "{" (functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+		//	| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"blip-group" name=ValidID "{" (functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+		//| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"blip-group"
+		public Keyword getBlipGroupKeyword_0() { return cBlipGroupKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//(functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+		//| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)*
+		public Alternatives getAlternatives_3() { return cAlternatives_3; }
+
+		//functions+=FunctionLibraryFunction
+		public Assignment getFunctionsAssignment_3_0() { return cFunctionsAssignment_3_0; }
+
+		//FunctionLibraryFunction
+		public RuleCall getFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0() { return cFunctionsFunctionLibraryFunctionParserRuleCall_3_0_0; }
+
+		//tests+=FunctionLibraryTest
+		public Assignment getTestsAssignment_3_1() { return cTestsAssignment_3_1; }
+
+		//FunctionLibraryTest
+		public RuleCall getTestsFunctionLibraryTestParserRuleCall_3_1_0() { return cTestsFunctionLibraryTestParserRuleCall_3_1_0; }
+
+		//rates+=FunctionLibraryRate
+		public Assignment getRatesAssignment_3_2() { return cRatesAssignment_3_2; }
+
+		//FunctionLibraryRate
+		public RuleCall getRatesFunctionLibraryRateParserRuleCall_3_2_0() { return cRatesFunctionLibraryRateParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class FunctionLibraryStatemachineGroupElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryStatemachineGroup");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cStatemachineKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
+		private final Assignment cOperationsAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
+		private final RuleCall cOperationsFunctionLibraryOperationParserRuleCall_3_0_0 = (RuleCall)cOperationsAssignment_3_0.eContents().get(0);
+		private final Assignment cGuardsAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1);
+		private final RuleCall cGuardsFunctionLibraryGuardParserRuleCall_3_1_0 = (RuleCall)cGuardsAssignment_3_1.eContents().get(0);
+		private final Assignment cFunctionsAssignment_3_2 = (Assignment)cAlternatives_3.eContents().get(2);
+		private final RuleCall cFunctionsFunctionLibraryFunctionParserRuleCall_3_2_0 = (RuleCall)cFunctionsAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//FunctionLibraryStatemachineGroup:
+		//	"statemachine" name=ValidID "{" (operations+=FunctionLibraryOperation | guards+=FunctionLibraryGuard |
+		//	functions+=FunctionLibraryFunction)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"statemachine" name=ValidID "{" (operations+=FunctionLibraryOperation | guards+=FunctionLibraryGuard |
+		//functions+=FunctionLibraryFunction)* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"statemachine"
+		public Keyword getStatemachineKeyword_0() { return cStatemachineKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//(operations+=FunctionLibraryOperation | guards+=FunctionLibraryGuard | functions+=FunctionLibraryFunction)*
+		public Alternatives getAlternatives_3() { return cAlternatives_3; }
+
+		//operations+=FunctionLibraryOperation
+		public Assignment getOperationsAssignment_3_0() { return cOperationsAssignment_3_0; }
+
+		//FunctionLibraryOperation
+		public RuleCall getOperationsFunctionLibraryOperationParserRuleCall_3_0_0() { return cOperationsFunctionLibraryOperationParserRuleCall_3_0_0; }
+
+		//guards+=FunctionLibraryGuard
+		public Assignment getGuardsAssignment_3_1() { return cGuardsAssignment_3_1; }
+
+		//FunctionLibraryGuard
+		public RuleCall getGuardsFunctionLibraryGuardParserRuleCall_3_1_0() { return cGuardsFunctionLibraryGuardParserRuleCall_3_1_0; }
+
+		//functions+=FunctionLibraryFunction
+		public Assignment getFunctionsAssignment_3_2() { return cFunctionsAssignment_3_2; }
+
+		//FunctionLibraryFunction
+		public RuleCall getFunctionsFunctionLibraryFunctionParserRuleCall_3_2_0() { return cFunctionsFunctionLibraryFunctionParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class FunctionLibraryConverterGroupElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryConverterGroup");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cConverterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cModelDatatypeKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cConvertToModelDatatypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cConvertToModelDatatypeLDataTypeCrossReference_4_0 = (CrossReference)cConvertToModelDatatypeAssignment_4.eContents().get(0);
+		private final RuleCall cConvertToModelDatatypeLDataTypeTYPE_CROSS_REFERENCEParserRuleCall_4_0_1 = (RuleCall)cConvertToModelDatatypeLDataTypeCrossReference_4_0.eContents().get(1);
+		private final Keyword cPresentationDatatypeKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cConvertToPresentationDatatypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cConvertToPresentationDatatypeLDataTypeCrossReference_6_0 = (CrossReference)cConvertToPresentationDatatypeAssignment_6.eContents().get(0);
+		private final RuleCall cConvertToPresentationDatatypeLDataTypeTYPE_CROSS_REFERENCEParserRuleCall_6_0_1 = (RuleCall)cConvertToPresentationDatatypeLDataTypeCrossReference_6_0.eContents().get(1);
+		private final Assignment cConvertToModelAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cConvertToModelFunctionConvertToModelParserRuleCall_7_0 = (RuleCall)cConvertToModelAssignment_7.eContents().get(0);
+		private final Assignment cConvertToPresentationAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final RuleCall cConvertToPresentationFunctionConvertToPresentationParserRuleCall_8_0 = (RuleCall)cConvertToPresentationAssignment_8.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		
+		//FunctionLibraryConverterGroup:
+		//	"converter" name=ValidID "{" "model-datatype" convertToModelDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		//	"presentation-datatype" convertToPresentationDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		//	convertToModel=FunctionConvertToModel convertToPresentation=FunctionConvertToPresentation "}";
+		public ParserRule getRule() { return rule; }
+
+		//"converter" name=ValidID "{" "model-datatype" convertToModelDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		//"presentation-datatype" convertToPresentationDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		//convertToModel=FunctionConvertToModel convertToPresentation=FunctionConvertToPresentation "}"
+		public Group getGroup() { return cGroup; }
+
+		//"converter"
+		public Keyword getConverterKeyword_0() { return cConverterKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"model-datatype"
+		public Keyword getModelDatatypeKeyword_3() { return cModelDatatypeKeyword_3; }
+
+		//convertToModelDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		public Assignment getConvertToModelDatatypeAssignment_4() { return cConvertToModelDatatypeAssignment_4; }
+
+		//[LDataType|TYPE_CROSS_REFERENCE]
+		public CrossReference getConvertToModelDatatypeLDataTypeCrossReference_4_0() { return cConvertToModelDatatypeLDataTypeCrossReference_4_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getConvertToModelDatatypeLDataTypeTYPE_CROSS_REFERENCEParserRuleCall_4_0_1() { return cConvertToModelDatatypeLDataTypeTYPE_CROSS_REFERENCEParserRuleCall_4_0_1; }
+
+		//"presentation-datatype"
+		public Keyword getPresentationDatatypeKeyword_5() { return cPresentationDatatypeKeyword_5; }
+
+		//convertToPresentationDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		public Assignment getConvertToPresentationDatatypeAssignment_6() { return cConvertToPresentationDatatypeAssignment_6; }
+
+		//[LDataType|TYPE_CROSS_REFERENCE]
+		public CrossReference getConvertToPresentationDatatypeLDataTypeCrossReference_6_0() { return cConvertToPresentationDatatypeLDataTypeCrossReference_6_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getConvertToPresentationDatatypeLDataTypeTYPE_CROSS_REFERENCEParserRuleCall_6_0_1() { return cConvertToPresentationDatatypeLDataTypeTYPE_CROSS_REFERENCEParserRuleCall_6_0_1; }
+
+		//convertToModel=FunctionConvertToModel
+		public Assignment getConvertToModelAssignment_7() { return cConvertToModelAssignment_7; }
+
+		//FunctionConvertToModel
+		public RuleCall getConvertToModelFunctionConvertToModelParserRuleCall_7_0() { return cConvertToModelFunctionConvertToModelParserRuleCall_7_0; }
+
+		//convertToPresentation=FunctionConvertToPresentation
+		public Assignment getConvertToPresentationAssignment_8() { return cConvertToPresentationAssignment_8; }
+
+		//FunctionConvertToPresentation
+		public RuleCall getConvertToPresentationFunctionConvertToPresentationParserRuleCall_8_0() { return cConvertToPresentationFunctionConvertToPresentationParserRuleCall_8_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+	}
+
+	public class FunctionConvertToModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionConvertToModel");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cToModelKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cBodyAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_1_0 = (RuleCall)cBodyAssignment_1.eContents().get(0);
+		
+		//FunctionConvertToModel:
+		//	"to-model" body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"to-model" body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"to-model"
+		public Keyword getToModelKeyword_0() { return cToModelKeyword_0; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_1() { return cBodyAssignment_1; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_1_0() { return cBodyXBlockExpressionParserRuleCall_1_0; }
+	}
+
+	public class FunctionConvertToPresentationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionConvertToPresentation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cToPresentationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cBodyAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_1_0 = (RuleCall)cBodyAssignment_1.eContents().get(0);
+		
+		//FunctionConvertToPresentation:
+		//	"to-presentation" body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"to-presentation" body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"to-presentation"
+		public Keyword getToPresentationKeyword_0() { return cToPresentationKeyword_0; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_1() { return cBodyAssignment_1; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_1_0() { return cBodyXBlockExpressionParserRuleCall_1_0; }
+	}
+
+	public class FunctionLibraryRatingElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryRating");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cFunctionLibraryRatingAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cRatingKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameValidIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cItemsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cItemsFunctionLibraryRatingItemParserRuleCall_4_0 = (RuleCall)cItemsAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		////FunctionLibraryProperty:
+		////	'property' name=ValidID 'oftype' oftype=JvmTypeReference;
+		//FunctionLibraryRating:
+		//	{FunctionLibraryRating} "rating" name=ValidID "{" items+=FunctionLibraryRatingItem* "}";
+		public ParserRule getRule() { return rule; }
+
+		//{FunctionLibraryRating} "rating" name=ValidID "{" items+=FunctionLibraryRatingItem* "}"
+		public Group getGroup() { return cGroup; }
+
+		//{FunctionLibraryRating}
+		public Action getFunctionLibraryRatingAction_0() { return cFunctionLibraryRatingAction_0; }
+
+		//"rating"
+		public Keyword getRatingKeyword_1() { return cRatingKeyword_1; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_2_0() { return cNameValidIDParserRuleCall_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//items+=FunctionLibraryRatingItem*
+		public Assignment getItemsAssignment_4() { return cItemsAssignment_4; }
+
+		//FunctionLibraryRatingItem
+		public RuleCall getItemsFunctionLibraryRatingItemParserRuleCall_4_0() { return cItemsFunctionLibraryRatingItemParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class FunctionLibraryRatingItemElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryRatingItem");
+		private final Assignment cNameAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_0 = (RuleCall)cNameAssignment.eContents().get(0);
+		
+		//FunctionLibraryRatingItem:
+		//	name=ValidID;
+		public ParserRule getRule() { return rule; }
+
+		//name=ValidID
+		public Assignment getNameAssignment() { return cNameAssignment; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_0() { return cNameValidIDParserRuleCall_0; }
+	}
+
+	public class FunctionLibraryFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFunctionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cParamsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_0_0 = (RuleCall)cParamsAssignment_3_0.eContents().get(0);
+		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+		private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cParamsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0 = (RuleCall)cParamsAssignment_3_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Keyword cReturnsKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cOftypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cOftypeJvmParameterizedTypeReferenceParserRuleCall_6_0 = (RuleCall)cOftypeAssignment_6.eContents().get(0);
+		private final Assignment cBodyAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_7_0 = (RuleCall)cBodyAssignment_7.eContents().get(0);
+		
+		//FunctionLibraryFunction:
+		//	"function" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")" "returns"
+		//	oftype=JvmParameterizedTypeReference body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"function" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")" "returns"
+		//oftype=JvmParameterizedTypeReference body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"function"
+		public Keyword getFunctionKeyword_0() { return cFunctionKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//(params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_0() { return cParamsAssignment_3_0; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_0_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_0_0; }
+
+		//("," params+=FunctionLibraryParameter)*
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//","
+		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_1_1() { return cParamsAssignment_3_1_1; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+
+		//"returns"
+		public Keyword getReturnsKeyword_5() { return cReturnsKeyword_5; }
+
+		//oftype=JvmParameterizedTypeReference
+		public Assignment getOftypeAssignment_6() { return cOftypeAssignment_6; }
+
+		//JvmParameterizedTypeReference
+		public RuleCall getOftypeJvmParameterizedTypeReferenceParserRuleCall_6_0() { return cOftypeJvmParameterizedTypeReferenceParserRuleCall_6_0; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_7() { return cBodyAssignment_7; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_7_0() { return cBodyXBlockExpressionParserRuleCall_7_0; }
+	}
+
+	public class FunctionLibraryTestElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryTest");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cTestKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cParamsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_0_0 = (RuleCall)cParamsAssignment_3_0.eContents().get(0);
+		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+		private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cParamsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0 = (RuleCall)cParamsAssignment_3_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cBodyAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_5_0 = (RuleCall)cBodyAssignment_5.eContents().get(0);
+		
+		//FunctionLibraryTest:
+		//	"test" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+		//	body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"test" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+		//body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"test"
+		public Keyword getTestKeyword_0() { return cTestKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//(params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_0() { return cParamsAssignment_3_0; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_0_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_0_0; }
+
+		//("," params+=FunctionLibraryParameter)*
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//","
+		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_1_1() { return cParamsAssignment_3_1_1; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_5() { return cBodyAssignment_5; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_5_0() { return cBodyXBlockExpressionParserRuleCall_5_0; }
+	}
+
+	public class FunctionLibraryRateElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryRate");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRateKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cParamsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_0_0 = (RuleCall)cParamsAssignment_3_0.eContents().get(0);
+		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+		private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cParamsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0 = (RuleCall)cParamsAssignment_3_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Keyword cReturnsKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cOftypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cOftypeFunctionLibraryRatingCrossReference_6_0 = (CrossReference)cOftypeAssignment_6.eContents().get(0);
+		private final RuleCall cOftypeFunctionLibraryRatingIDTerminalRuleCall_6_0_1 = (RuleCall)cOftypeFunctionLibraryRatingCrossReference_6_0.eContents().get(1);
+		private final Assignment cBodyAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_7_0 = (RuleCall)cBodyAssignment_7.eContents().get(0);
+		
+		//FunctionLibraryRate:
+		//	"rate" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")" "returns"
+		//	oftype=[FunctionLibraryRating] body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"rate" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")" "returns"
+		//oftype=[FunctionLibraryRating] body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"rate"
+		public Keyword getRateKeyword_0() { return cRateKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//(params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_0() { return cParamsAssignment_3_0; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_0_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_0_0; }
+
+		//("," params+=FunctionLibraryParameter)*
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//","
+		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_1_1() { return cParamsAssignment_3_1_1; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+
+		//"returns"
+		public Keyword getReturnsKeyword_5() { return cReturnsKeyword_5; }
+
+		//oftype=[FunctionLibraryRating]
+		public Assignment getOftypeAssignment_6() { return cOftypeAssignment_6; }
+
+		//[FunctionLibraryRating]
+		public CrossReference getOftypeFunctionLibraryRatingCrossReference_6_0() { return cOftypeFunctionLibraryRatingCrossReference_6_0; }
+
+		//ID
+		public RuleCall getOftypeFunctionLibraryRatingIDTerminalRuleCall_6_0_1() { return cOftypeFunctionLibraryRatingIDTerminalRuleCall_6_0_1; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_7() { return cBodyAssignment_7; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_7_0() { return cBodyXBlockExpressionParserRuleCall_7_0; }
+	}
+
+	public class FunctionLibraryGuardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryGuard");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cGuardKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cParamsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_0_0 = (RuleCall)cParamsAssignment_3_0.eContents().get(0);
+		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+		private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cParamsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0 = (RuleCall)cParamsAssignment_3_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cBodyAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_5_0 = (RuleCall)cBodyAssignment_5.eContents().get(0);
+		
+		//FunctionLibraryGuard:
+		//	"guard" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+		//	body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"guard" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+		//body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"guard"
+		public Keyword getGuardKeyword_0() { return cGuardKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//(params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_0() { return cParamsAssignment_3_0; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_0_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_0_0; }
+
+		//("," params+=FunctionLibraryParameter)*
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//","
+		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_1_1() { return cParamsAssignment_3_1_1; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_5() { return cBodyAssignment_5; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_5_0() { return cBodyXBlockExpressionParserRuleCall_5_0; }
+	}
+
+	public class FunctionLibraryOperationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryOperation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cOperationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cParamsAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_0_0 = (RuleCall)cParamsAssignment_3_0.eContents().get(0);
+		private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1);
+		private final Keyword cCommaKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cParamsAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0 = (RuleCall)cParamsAssignment_3_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cBodyAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cBodyXBlockExpressionParserRuleCall_5_0 = (RuleCall)cBodyAssignment_5.eContents().get(0);
+		
+		//FunctionLibraryOperation:
+		//	"operation" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+		//	body=XBlockExpression;
+		public ParserRule getRule() { return rule; }
+
+		//"operation" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+		//body=XBlockExpression
+		public Group getGroup() { return cGroup; }
+
+		//"operation"
+		public Keyword getOperationKeyword_0() { return cOperationKeyword_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//(params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_0() { return cParamsAssignment_3_0; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_0_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_0_0; }
+
+		//("," params+=FunctionLibraryParameter)*
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//","
+		public Keyword getCommaKeyword_3_1_0() { return cCommaKeyword_3_1_0; }
+
+		//params+=FunctionLibraryParameter
+		public Assignment getParamsAssignment_3_1_1() { return cParamsAssignment_3_1_1; }
+
+		//FunctionLibraryParameter
+		public RuleCall getParamsFunctionLibraryParameterParserRuleCall_3_1_1_0() { return cParamsFunctionLibraryParameterParserRuleCall_3_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_4() { return cRightParenthesisKeyword_4; }
+
+		//body=XBlockExpression
+		public Assignment getBodyAssignment_5() { return cBodyAssignment_5; }
+
+		//XBlockExpression
+		public RuleCall getBodyXBlockExpressionParserRuleCall_5_0() { return cBodyXBlockExpressionParserRuleCall_5_0; }
+	}
+
+	public class FunctionLibraryParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionLibraryParameter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cParameterTypeAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cParameterTypeJvmTypeReferenceParserRuleCall_0_0 = (RuleCall)cParameterTypeAssignment_0.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		
+		////	('requires' requires=XExpression)?
+		//FunctionLibraryParameter:
+		//	parameterType=JvmTypeReference name=ValidID;
+		public ParserRule getRule() { return rule; }
+
+		//parameterType=JvmTypeReference name=ValidID
+		public Group getGroup() { return cGroup; }
+
+		//parameterType=JvmTypeReference
+		public Assignment getParameterTypeAssignment_0() { return cParameterTypeAssignment_0; }
+
+		//JvmTypeReference
+		public RuleCall getParameterTypeJvmTypeReferenceParserRuleCall_0_0() { return cParameterTypeJvmTypeReferenceParserRuleCall_0_0; }
+
+		//name=ValidID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidID
+		public RuleCall getNameValidIDParserRuleCall_1_0() { return cNameValidIDParserRuleCall_1_0; }
+	}
+
+	public class TYPE_CROSS_REFERENCEElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TYPE_CROSS_REFERENCE");
+		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TYPE_CROSS_REFERENCE:
+		//	ID;
+		public ParserRule getRule() { return rule; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+	}
+	
+	
+	private final FunctionLibraryModelElements pFunctionLibraryModel;
+	private final FunctionLibraryPackageElements pFunctionLibraryPackage;
+	private final FunctionLibraryGroupElements pFunctionLibraryGroup;
+	private final FunctionLibraryBlipGroupElements pFunctionLibraryBlipGroup;
+	private final FunctionLibraryStatemachineGroupElements pFunctionLibraryStatemachineGroup;
+	private final FunctionLibraryConverterGroupElements pFunctionLibraryConverterGroup;
+	private final FunctionConvertToModelElements pFunctionConvertToModel;
+	private final FunctionConvertToPresentationElements pFunctionConvertToPresentation;
+	private final FunctionLibraryRatingElements pFunctionLibraryRating;
+	private final FunctionLibraryRatingItemElements pFunctionLibraryRatingItem;
+	private final FunctionLibraryFunctionElements pFunctionLibraryFunction;
+	private final FunctionLibraryTestElements pFunctionLibraryTest;
+	private final FunctionLibraryRateElements pFunctionLibraryRate;
+	private final FunctionLibraryGuardElements pFunctionLibraryGuard;
+	private final FunctionLibraryOperationElements pFunctionLibraryOperation;
+	private final FunctionLibraryParameterElements pFunctionLibraryParameter;
+	private final TYPE_CROSS_REFERENCEElements pTYPE_CROSS_REFERENCE;
+	
+	private final Grammar grammar;
+
+	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+
+	@Inject
+	public FunctionLibraryDslGrammarAccess(GrammarProvider grammarProvider,
+		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.pFunctionLibraryModel = new FunctionLibraryModelElements();
+		this.pFunctionLibraryPackage = new FunctionLibraryPackageElements();
+		this.pFunctionLibraryGroup = new FunctionLibraryGroupElements();
+		this.pFunctionLibraryBlipGroup = new FunctionLibraryBlipGroupElements();
+		this.pFunctionLibraryStatemachineGroup = new FunctionLibraryStatemachineGroupElements();
+		this.pFunctionLibraryConverterGroup = new FunctionLibraryConverterGroupElements();
+		this.pFunctionConvertToModel = new FunctionConvertToModelElements();
+		this.pFunctionConvertToPresentation = new FunctionConvertToPresentationElements();
+		this.pFunctionLibraryRating = new FunctionLibraryRatingElements();
+		this.pFunctionLibraryRatingItem = new FunctionLibraryRatingItemElements();
+		this.pFunctionLibraryFunction = new FunctionLibraryFunctionElements();
+		this.pFunctionLibraryTest = new FunctionLibraryTestElements();
+		this.pFunctionLibraryRate = new FunctionLibraryRateElements();
+		this.pFunctionLibraryGuard = new FunctionLibraryGuardElements();
+		this.pFunctionLibraryOperation = new FunctionLibraryOperationElements();
+		this.pFunctionLibraryParameter = new FunctionLibraryParameterElements();
+		this.pTYPE_CROSS_REFERENCE = new TYPE_CROSS_REFERENCEElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl".equals(grammar.getName())) {
+				return grammar;
+			}
+			List<Grammar> grammars = grammar.getUsedGrammars();
+			if (!grammars.isEmpty()) {
+				grammar = grammars.iterator().next();
+			} else {
+				return null;
+			}
+		}
+		return grammar;
+	}
+	
+	
+	public Grammar getGrammar() {
+		return grammar;
+	}
+	
+
+	public XbaseWithAnnotationsGrammarAccess getXbaseWithAnnotationsGrammarAccess() {
+		return gaXbaseWithAnnotations;
+	}
+
+	
+	//// ??????????????????????????????????????????????????????????????????????????????????????
+	//// Formelparser aufgrund String siehe JEXL
+	//// - http://commons.apache.org/proper/commons-jexl/reference/examples.html
+	//// - Formel wird als String angegeben
+	//// - wahrscheinlich keine wirkliche syntaktische Prüfung möglich (außer createExpression)
+	//// - Datentypensicherheit wie?
+	//// ??????????????????????????????????????????????????????????????????????????????????????
+	//FunctionLibraryModel:
+	//	pckg=FunctionLibraryPackage;
+	public FunctionLibraryModelElements getFunctionLibraryModelAccess() {
+		return pFunctionLibraryModel;
+	}
+	
+	public ParserRule getFunctionLibraryModelRule() {
+		return getFunctionLibraryModelAccess().getRule();
+	}
+
+	//FunctionLibraryPackage:
+	//	{FunctionLibraryPackage} importSection=XImportSection? "package" name=QualifiedName "{"
+	//	(groups+=(FunctionLibraryGroup | FunctionLibraryBlipGroup | FunctionLibraryConverterGroup |
+	//	FunctionLibraryStatemachineGroup) | ratings+=FunctionLibraryRating)* "}";
+	public FunctionLibraryPackageElements getFunctionLibraryPackageAccess() {
+		return pFunctionLibraryPackage;
+	}
+	
+	public ParserRule getFunctionLibraryPackageRule() {
+		return getFunctionLibraryPackageAccess().getRule();
+	}
+
+	////FunctionLibraryImport:
+	////	'import' importedNamespace=QualifiedNameWithWildcard;
+	//FunctionLibraryGroup:
+	//	"group" name=ValidID "{" (functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+	//	| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)* "}";
+	public FunctionLibraryGroupElements getFunctionLibraryGroupAccess() {
+		return pFunctionLibraryGroup;
+	}
+	
+	public ParserRule getFunctionLibraryGroupRule() {
+		return getFunctionLibraryGroupAccess().getRule();
+	}
+
+	//FunctionLibraryBlipGroup:
+	//	"blip-group" name=ValidID "{" (functions+=FunctionLibraryFunction //		properties+=FunctionLibraryProperty*
+	//	| tests+=FunctionLibraryTest | rates+=FunctionLibraryRate)* "}";
+	public FunctionLibraryBlipGroupElements getFunctionLibraryBlipGroupAccess() {
+		return pFunctionLibraryBlipGroup;
+	}
+	
+	public ParserRule getFunctionLibraryBlipGroupRule() {
+		return getFunctionLibraryBlipGroupAccess().getRule();
+	}
+
+	//FunctionLibraryStatemachineGroup:
+	//	"statemachine" name=ValidID "{" (operations+=FunctionLibraryOperation | guards+=FunctionLibraryGuard |
+	//	functions+=FunctionLibraryFunction)* "}";
+	public FunctionLibraryStatemachineGroupElements getFunctionLibraryStatemachineGroupAccess() {
+		return pFunctionLibraryStatemachineGroup;
+	}
+	
+	public ParserRule getFunctionLibraryStatemachineGroupRule() {
+		return getFunctionLibraryStatemachineGroupAccess().getRule();
+	}
+
+	//FunctionLibraryConverterGroup:
+	//	"converter" name=ValidID "{" "model-datatype" convertToModelDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+	//	"presentation-datatype" convertToPresentationDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+	//	convertToModel=FunctionConvertToModel convertToPresentation=FunctionConvertToPresentation "}";
+	public FunctionLibraryConverterGroupElements getFunctionLibraryConverterGroupAccess() {
+		return pFunctionLibraryConverterGroup;
+	}
+	
+	public ParserRule getFunctionLibraryConverterGroupRule() {
+		return getFunctionLibraryConverterGroupAccess().getRule();
+	}
+
+	//FunctionConvertToModel:
+	//	"to-model" body=XBlockExpression;
+	public FunctionConvertToModelElements getFunctionConvertToModelAccess() {
+		return pFunctionConvertToModel;
+	}
+	
+	public ParserRule getFunctionConvertToModelRule() {
+		return getFunctionConvertToModelAccess().getRule();
+	}
+
+	//FunctionConvertToPresentation:
+	//	"to-presentation" body=XBlockExpression;
+	public FunctionConvertToPresentationElements getFunctionConvertToPresentationAccess() {
+		return pFunctionConvertToPresentation;
+	}
+	
+	public ParserRule getFunctionConvertToPresentationRule() {
+		return getFunctionConvertToPresentationAccess().getRule();
+	}
+
+	////FunctionLibraryProperty:
+	////	'property' name=ValidID 'oftype' oftype=JvmTypeReference;
+	//FunctionLibraryRating:
+	//	{FunctionLibraryRating} "rating" name=ValidID "{" items+=FunctionLibraryRatingItem* "}";
+	public FunctionLibraryRatingElements getFunctionLibraryRatingAccess() {
+		return pFunctionLibraryRating;
+	}
+	
+	public ParserRule getFunctionLibraryRatingRule() {
+		return getFunctionLibraryRatingAccess().getRule();
+	}
+
+	//FunctionLibraryRatingItem:
+	//	name=ValidID;
+	public FunctionLibraryRatingItemElements getFunctionLibraryRatingItemAccess() {
+		return pFunctionLibraryRatingItem;
+	}
+	
+	public ParserRule getFunctionLibraryRatingItemRule() {
+		return getFunctionLibraryRatingItemAccess().getRule();
+	}
+
+	//FunctionLibraryFunction:
+	//	"function" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")" "returns"
+	//	oftype=JvmParameterizedTypeReference body=XBlockExpression;
+	public FunctionLibraryFunctionElements getFunctionLibraryFunctionAccess() {
+		return pFunctionLibraryFunction;
+	}
+	
+	public ParserRule getFunctionLibraryFunctionRule() {
+		return getFunctionLibraryFunctionAccess().getRule();
+	}
+
+	//FunctionLibraryTest:
+	//	"test" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+	//	body=XBlockExpression;
+	public FunctionLibraryTestElements getFunctionLibraryTestAccess() {
+		return pFunctionLibraryTest;
+	}
+	
+	public ParserRule getFunctionLibraryTestRule() {
+		return getFunctionLibraryTestAccess().getRule();
+	}
+
+	//FunctionLibraryRate:
+	//	"rate" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")" "returns"
+	//	oftype=[FunctionLibraryRating] body=XBlockExpression;
+	public FunctionLibraryRateElements getFunctionLibraryRateAccess() {
+		return pFunctionLibraryRate;
+	}
+	
+	public ParserRule getFunctionLibraryRateRule() {
+		return getFunctionLibraryRateAccess().getRule();
+	}
+
+	//FunctionLibraryGuard:
+	//	"guard" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+	//	body=XBlockExpression;
+	public FunctionLibraryGuardElements getFunctionLibraryGuardAccess() {
+		return pFunctionLibraryGuard;
+	}
+	
+	public ParserRule getFunctionLibraryGuardRule() {
+		return getFunctionLibraryGuardAccess().getRule();
+	}
+
+	//FunctionLibraryOperation:
+	//	"operation" name=ValidID "(" (params+=FunctionLibraryParameter ("," params+=FunctionLibraryParameter)*)? ")"
+	//	body=XBlockExpression;
+	public FunctionLibraryOperationElements getFunctionLibraryOperationAccess() {
+		return pFunctionLibraryOperation;
+	}
+	
+	public ParserRule getFunctionLibraryOperationRule() {
+		return getFunctionLibraryOperationAccess().getRule();
+	}
+
+	////	('requires' requires=XExpression)?
+	//FunctionLibraryParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public FunctionLibraryParameterElements getFunctionLibraryParameterAccess() {
+		return pFunctionLibraryParameter;
+	}
+	
+	public ParserRule getFunctionLibraryParameterRule() {
+		return getFunctionLibraryParameterAccess().getRule();
+	}
+
+	//TYPE_CROSS_REFERENCE:
+	//	ID;
+	public TYPE_CROSS_REFERENCEElements getTYPE_CROSS_REFERENCEAccess() {
+		return pTYPE_CROSS_REFERENCE;
+	}
+	
+	public ParserRule getTYPE_CROSS_REFERENCERule() {
+		return getTYPE_CROSS_REFERENCEAccess().getRule();
+	}
+
+	//XAnnotation:
+	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
+	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
+	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationAccess();
+	}
+	
+	public ParserRule getXAnnotationRule() {
+		return getXAnnotationAccess().getRule();
+	}
+
+	//XAnnotationElementValuePair:
+	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationElementValuePairAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValuePairRule() {
+		return getXAnnotationElementValuePairAccess().getRule();
+	}
+
+	//XAnnotationElementValueOrCommaList returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]"
+	//	| XAnnotationOrExpression ({xbase::XListLiteral.elements+=current} ("," elements+=XAnnotationOrExpression)+)?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueOrCommaListElements getXAnnotationElementValueOrCommaListAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationElementValueOrCommaListAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueOrCommaListRule() {
+		return getXAnnotationElementValueOrCommaListAccess().getRule();
+	}
+
+	//XAnnotationElementValue returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]"
+	//	| XAnnotationOrExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationElementValueAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueRule() {
+		return getXAnnotationElementValueAccess().getRule();
+	}
+
+	//XAnnotationOrExpression returns xbase::XExpression:
+	//	XAnnotation | XExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
+	}
+	
+	public ParserRule getXAnnotationOrExpressionRule() {
+		return getXAnnotationOrExpressionAccess().getRule();
+	}
+
+	//XExpression:
+	//	XAssignment;
+	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
+		return gaXbaseWithAnnotations.getXExpressionAccess();
+	}
+	
+	public ParserRule getXExpressionRule() {
+		return getXExpressionAccess().getRule();
+	}
+
+	//XAssignment returns XExpression:
+	//	{XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign value=XAssignment | XOrExpression
+	//	(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
+	//	rightOperand=XAssignment)?;
+	public XbaseGrammarAccess.XAssignmentElements getXAssignmentAccess() {
+		return gaXbaseWithAnnotations.getXAssignmentAccess();
+	}
+	
+	public ParserRule getXAssignmentRule() {
+		return getXAssignmentAccess().getRule();
+	}
+
+	//OpSingleAssign:
+	//	"=";
+	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
+		return gaXbaseWithAnnotations.getOpSingleAssignAccess();
+	}
+	
+	public ParserRule getOpSingleAssignRule() {
+		return getOpSingleAssignAccess().getRule();
+	}
+
+	//OpMultiAssign:
+	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
+		return gaXbaseWithAnnotations.getOpMultiAssignAccess();
+	}
+	
+	public ParserRule getOpMultiAssignRule() {
+		return getOpMultiAssignAccess().getRule();
+	}
+
+	//XOrExpression returns XExpression:
+	//	XAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOr])
+	//	rightOperand=XAndExpression)*;
+	public XbaseGrammarAccess.XOrExpressionElements getXOrExpressionAccess() {
+		return gaXbaseWithAnnotations.getXOrExpressionAccess();
+	}
+	
+	public ParserRule getXOrExpressionRule() {
+		return getXOrExpressionAccess().getRule();
+	}
+
+	//OpOr:
+	//	"||";
+	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
+		return gaXbaseWithAnnotations.getOpOrAccess();
+	}
+	
+	public ParserRule getOpOrRule() {
+		return getOpOrAccess().getRule();
+	}
+
+	//XAndExpression returns XExpression:
+	//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
+	//	rightOperand=XEqualityExpression)*;
+	public XbaseGrammarAccess.XAndExpressionElements getXAndExpressionAccess() {
+		return gaXbaseWithAnnotations.getXAndExpressionAccess();
+	}
+	
+	public ParserRule getXAndExpressionRule() {
+		return getXAndExpressionAccess().getRule();
+	}
+
+	//OpAnd:
+	//	"&&";
+	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
+		return gaXbaseWithAnnotations.getOpAndAccess();
+	}
+	
+	public ParserRule getOpAndRule() {
+		return getOpAndAccess().getRule();
+	}
+
+	//XEqualityExpression returns XExpression:
+	//	XRelationalExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpEquality])
+	//	rightOperand=XRelationalExpression)*;
+	public XbaseGrammarAccess.XEqualityExpressionElements getXEqualityExpressionAccess() {
+		return gaXbaseWithAnnotations.getXEqualityExpressionAccess();
+	}
+	
+	public ParserRule getXEqualityExpressionRule() {
+		return getXEqualityExpressionAccess().getRule();
+	}
+
+	//OpEquality:
+	//	"==" | "!=" | "===" | "!==";
+	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
+		return gaXbaseWithAnnotations.getOpEqualityAccess();
+	}
+	
+	public ParserRule getOpEqualityRule() {
+		return getOpEqualityAccess().getRule();
+	}
+
+	//XRelationalExpression returns XExpression:
+	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
+	//	({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
+	//	rightOperand=XOtherOperatorExpression)*;
+	public XbaseGrammarAccess.XRelationalExpressionElements getXRelationalExpressionAccess() {
+		return gaXbaseWithAnnotations.getXRelationalExpressionAccess();
+	}
+	
+	public ParserRule getXRelationalExpressionRule() {
+		return getXRelationalExpressionAccess().getRule();
+	}
+
+	//OpCompare:
+	//	">=" | "<" "=" | ">" | "<";
+	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
+		return gaXbaseWithAnnotations.getOpCompareAccess();
+	}
+	
+	public ParserRule getOpCompareRule() {
+		return getOpCompareAccess().getRule();
+	}
+
+	//XOtherOperatorExpression returns XExpression:
+	//	XAdditiveExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOther])
+	//	rightOperand=XAdditiveExpression)*;
+	public XbaseGrammarAccess.XOtherOperatorExpressionElements getXOtherOperatorExpressionAccess() {
+		return gaXbaseWithAnnotations.getXOtherOperatorExpressionAccess();
+	}
+	
+	public ParserRule getXOtherOperatorExpressionRule() {
+		return getXOtherOperatorExpressionAccess().getRule();
+	}
+
+	//OpOther:
+	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
+		return gaXbaseWithAnnotations.getOpOtherAccess();
+	}
+	
+	public ParserRule getOpOtherRule() {
+		return getOpOtherAccess().getRule();
+	}
+
+	//XAdditiveExpression returns XExpression:
+	//	XMultiplicativeExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAdd])
+	//	rightOperand=XMultiplicativeExpression)*;
+	public XbaseGrammarAccess.XAdditiveExpressionElements getXAdditiveExpressionAccess() {
+		return gaXbaseWithAnnotations.getXAdditiveExpressionAccess();
+	}
+	
+	public ParserRule getXAdditiveExpressionRule() {
+		return getXAdditiveExpressionAccess().getRule();
+	}
+
+	//OpAdd:
+	//	"+" | "-";
+	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
+		return gaXbaseWithAnnotations.getOpAddAccess();
+	}
+	
+	public ParserRule getOpAddRule() {
+		return getOpAddAccess().getRule();
+	}
+
+	//XMultiplicativeExpression returns XExpression:
+	//	XUnaryOperation (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMulti])
+	//	rightOperand=XUnaryOperation)*;
+	public XbaseGrammarAccess.XMultiplicativeExpressionElements getXMultiplicativeExpressionAccess() {
+		return gaXbaseWithAnnotations.getXMultiplicativeExpressionAccess();
+	}
+	
+	public ParserRule getXMultiplicativeExpressionRule() {
+		return getXMultiplicativeExpressionAccess().getRule();
+	}
+
+	//OpMulti:
+	//	"*" | "**" | "/" | "%";
+	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
+		return gaXbaseWithAnnotations.getOpMultiAccess();
+	}
+	
+	public ParserRule getOpMultiRule() {
+		return getOpMultiAccess().getRule();
+	}
+
+	//XUnaryOperation returns XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
+		return gaXbaseWithAnnotations.getXUnaryOperationAccess();
+	}
+	
+	public ParserRule getXUnaryOperationRule() {
+		return getXUnaryOperationAccess().getRule();
+	}
+
+	//OpUnary:
+	//	"!" | "-" | "+";
+	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
+		return gaXbaseWithAnnotations.getOpUnaryAccess();
+	}
+	
+	public ParserRule getOpUnaryRule() {
+		return getOpUnaryAccess().getRule();
+	}
+
+	//XCastedExpression returns XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
+		return gaXbaseWithAnnotations.getXCastedExpressionAccess();
+	}
+	
+	public ParserRule getXCastedExpressionRule() {
+		return getXCastedExpressionAccess().getRule();
+	}
+
+	//XPostfixOperation returns XExpression:
+	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
+	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
+		return gaXbaseWithAnnotations.getXPostfixOperationAccess();
+	}
+	
+	public ParserRule getXPostfixOperationRule() {
+		return getXPostfixOperationAccess().getRule();
+	}
+
+	//OpPostfix:
+	//	"++" | "--";
+	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
+		return gaXbaseWithAnnotations.getOpPostfixAccess();
+	}
+	
+	public ParserRule getOpPostfixRule() {
+		return getOpPostfixAccess().getRule();
+	}
+
+	//XMemberFeatureCall returns XExpression:
+	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ("." | explicitStatic?="::")
+	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment | =>
+	//	({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ("<"
+	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (memberCallArguments+=XShortClosure
+	//	| memberCallArguments+=XExpression ("," memberCallArguments+=XExpression)*)? ")")? memberCallArguments+=XClosure?)*;
+	public XbaseGrammarAccess.XMemberFeatureCallElements getXMemberFeatureCallAccess() {
+		return gaXbaseWithAnnotations.getXMemberFeatureCallAccess();
+	}
+	
+	public ParserRule getXMemberFeatureCallRule() {
+		return getXMemberFeatureCallAccess().getRule();
+	}
+
+	//XPrimaryExpression returns XExpression:
+	//	XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
+	//	XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression |
+	//	XThrowExpression | XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression;
+	public XbaseGrammarAccess.XPrimaryExpressionElements getXPrimaryExpressionAccess() {
+		return gaXbaseWithAnnotations.getXPrimaryExpressionAccess();
+	}
+	
+	public ParserRule getXPrimaryExpressionRule() {
+		return getXPrimaryExpressionAccess().getRule();
+	}
+
+	//XLiteral returns XExpression:
+	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
+	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
+		return gaXbaseWithAnnotations.getXLiteralAccess();
+	}
+	
+	public ParserRule getXLiteralRule() {
+		return getXLiteralAccess().getRule();
+	}
+
+	//XCollectionLiteral:
+	//	XSetLiteral | XListLiteral;
+	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
+		return gaXbaseWithAnnotations.getXCollectionLiteralAccess();
+	}
+	
+	public ParserRule getXCollectionLiteralRule() {
+		return getXCollectionLiteralAccess().getRule();
+	}
+
+	//XSetLiteral:
+	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
+		return gaXbaseWithAnnotations.getXSetLiteralAccess();
+	}
+	
+	public ParserRule getXSetLiteralRule() {
+		return getXSetLiteralAccess().getRule();
+	}
+
+	//XListLiteral:
+	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
+		return gaXbaseWithAnnotations.getXListLiteralAccess();
+	}
+	
+	public ParserRule getXListLiteralRule() {
+		return getXListLiteralAccess().getRule();
+	}
+
+	//XClosure returns XExpression:
+	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
+	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
+		return gaXbaseWithAnnotations.getXClosureAccess();
+	}
+	
+	public ParserRule getXClosureRule() {
+		return getXClosureAccess().getRule();
+	}
+
+	//XExpressionInClosure returns XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
+		return gaXbaseWithAnnotations.getXExpressionInClosureAccess();
+	}
+	
+	public ParserRule getXExpressionInClosureRule() {
+		return getXExpressionInClosureAccess().getRule();
+	}
+
+	//XShortClosure returns XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?="|") expression=XExpression;
+	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
+		return gaXbaseWithAnnotations.getXShortClosureAccess();
+	}
+	
+	public ParserRule getXShortClosureRule() {
+		return getXShortClosureAccess().getRule();
+	}
+
+	//XParenthesizedExpression returns XExpression:
+	//	"(" XExpression ")";
+	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
+		return gaXbaseWithAnnotations.getXParenthesizedExpressionAccess();
+	}
+	
+	public ParserRule getXParenthesizedExpressionRule() {
+		return getXParenthesizedExpressionAccess().getRule();
+	}
+
+	//XIfExpression returns XExpression:
+	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
+		return gaXbaseWithAnnotations.getXIfExpressionAccess();
+	}
+	
+	public ParserRule getXIfExpressionRule() {
+		return getXIfExpressionAccess().getRule();
+	}
+
+	//XSwitchExpression returns XExpression:
+	//	{XSwitchExpression} "switch" (=> ("(" declaredParam=JvmFormalParameter ":") switch=XExpression ")" | =>
+	//	(declaredParam=JvmFormalParameter ":")? switch=XExpression) "{" cases+=XCasePart* ("default" ":"
+	//	default=XExpression)? "}";
+	public XbaseGrammarAccess.XSwitchExpressionElements getXSwitchExpressionAccess() {
+		return gaXbaseWithAnnotations.getXSwitchExpressionAccess();
+	}
+	
+	public ParserRule getXSwitchExpressionRule() {
+		return getXSwitchExpressionAccess().getRule();
+	}
+
+	//XCasePart:
+	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
+		return gaXbaseWithAnnotations.getXCasePartAccess();
+	}
+	
+	public ParserRule getXCasePartRule() {
+		return getXCasePartAccess().getRule();
+	}
+
+	//XForLoopExpression returns XExpression:
+	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	//	eachExpression=XExpression;
+	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
+		return gaXbaseWithAnnotations.getXForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXForLoopExpressionRule() {
+		return getXForLoopExpressionAccess().getRule();
+	}
+
+	//XBasicForLoopExpression returns XExpression:
+	//	{XBasicForLoopExpression} "for" "(" (initExpressions+=XExpressionOrVarDeclaration (","
+	//	initExpressions+=XExpressionOrVarDeclaration)*)? ";" expression=XExpression? ";" (updateExpressions+=XExpression (","
+	//	updateExpressions+=XExpression)*)? ")" eachExpression=XExpression;
+	public XbaseGrammarAccess.XBasicForLoopExpressionElements getXBasicForLoopExpressionAccess() {
+		return gaXbaseWithAnnotations.getXBasicForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXBasicForLoopExpressionRule() {
+		return getXBasicForLoopExpressionAccess().getRule();
+	}
+
+	//XWhileExpression returns XExpression:
+	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
+		return gaXbaseWithAnnotations.getXWhileExpressionAccess();
+	}
+	
+	public ParserRule getXWhileExpressionRule() {
+		return getXWhileExpressionAccess().getRule();
+	}
+
+	//XDoWhileExpression returns XExpression:
+	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
+		return gaXbaseWithAnnotations.getXDoWhileExpressionAccess();
+	}
+	
+	public ParserRule getXDoWhileExpressionRule() {
+		return getXDoWhileExpressionAccess().getRule();
+	}
+
+	//XBlockExpression returns XExpression:
+	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
+		return gaXbaseWithAnnotations.getXBlockExpressionAccess();
+	}
+	
+	public ParserRule getXBlockExpressionRule() {
+		return getXBlockExpressionAccess().getRule();
+	}
+
+	//XExpressionOrVarDeclaration returns XExpression:
+	//	XVariableDeclaration | XExpression;
+	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
+		return gaXbaseWithAnnotations.getXExpressionOrVarDeclarationAccess();
+	}
+	
+	public ParserRule getXExpressionOrVarDeclarationRule() {
+		return getXExpressionOrVarDeclarationAccess().getRule();
+	}
+
+	//XVariableDeclaration returns XExpression:
+	//	{XVariableDeclaration} (writeable?="var" | "val") (=> (type=JvmTypeReference name=ValidID) | name=ValidID) ("="
+	//	right=XExpression)?;
+	public XbaseGrammarAccess.XVariableDeclarationElements getXVariableDeclarationAccess() {
+		return gaXbaseWithAnnotations.getXVariableDeclarationAccess();
+	}
+	
+	public ParserRule getXVariableDeclarationRule() {
+		return getXVariableDeclarationAccess().getRule();
+	}
+
+	//JvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference? name=ValidID;
+	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
+		return gaXbaseWithAnnotations.getJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getJvmFormalParameterRule() {
+		return getJvmFormalParameterAccess().getRule();
+	}
+
+	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
+		return gaXbaseWithAnnotations.getFullJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getFullJvmFormalParameterRule() {
+		return getFullJvmFormalParameterAccess().getRule();
+	}
+
+	//XFeatureCall returns XExpression:
+	//	{XFeatureCall} ("<" typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (featureCallArguments+=XShortClosure
+	//	| featureCallArguments+=XExpression ("," featureCallArguments+=XExpression)*)? ")")? featureCallArguments+=XClosure?;
+	public XbaseGrammarAccess.XFeatureCallElements getXFeatureCallAccess() {
+		return gaXbaseWithAnnotations.getXFeatureCallAccess();
+	}
+	
+	public ParserRule getXFeatureCallRule() {
+		return getXFeatureCallAccess().getRule();
+	}
+
+	//FeatureCallID:
+	//	ValidID | "extends" | "static" | "import" | "extension";
+	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
+		return gaXbaseWithAnnotations.getFeatureCallIDAccess();
+	}
+	
+	public ParserRule getFeatureCallIDRule() {
+		return getFeatureCallIDAccess().getRule();
+	}
+
+	//IdOrSuper:
+	//	FeatureCallID | "super";
+	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
+		return gaXbaseWithAnnotations.getIdOrSuperAccess();
+	}
+	
+	public ParserRule getIdOrSuperRule() {
+		return getIdOrSuperAccess().getRule();
+	}
+
+	//XConstructorCall returns XExpression:
+	//	{XConstructorCall} "new" constructor=[types::JvmConstructor|QualifiedName] ("<"
+	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")? (=>
+	//	explicitConstructorCall?="(" (arguments+=XShortClosure | arguments+=XExpression ("," arguments+=XExpression)*)? ")")?
+	//	arguments+=XClosure?;
+	public XbaseGrammarAccess.XConstructorCallElements getXConstructorCallAccess() {
+		return gaXbaseWithAnnotations.getXConstructorCallAccess();
+	}
+	
+	public ParserRule getXConstructorCallRule() {
+		return getXConstructorCallAccess().getRule();
+	}
+
+	//XBooleanLiteral returns XExpression:
+	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
+		return gaXbaseWithAnnotations.getXBooleanLiteralAccess();
+	}
+	
+	public ParserRule getXBooleanLiteralRule() {
+		return getXBooleanLiteralAccess().getRule();
+	}
+
+	//XNullLiteral returns XExpression:
+	//	{XNullLiteral} "null";
+	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
+		return gaXbaseWithAnnotations.getXNullLiteralAccess();
+	}
+	
+	public ParserRule getXNullLiteralRule() {
+		return getXNullLiteralAccess().getRule();
+	}
+
+	//XNumberLiteral returns XExpression:
+	//	{XNumberLiteral} value=Number;
+	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
+		return gaXbaseWithAnnotations.getXNumberLiteralAccess();
+	}
+	
+	public ParserRule getXNumberLiteralRule() {
+		return getXNumberLiteralAccess().getRule();
+	}
+
+	//XStringLiteral returns XExpression:
+	//	{XStringLiteral} value=STRING;
+	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
+		return gaXbaseWithAnnotations.getXStringLiteralAccess();
+	}
+	
+	public ParserRule getXStringLiteralRule() {
+		return getXStringLiteralAccess().getRule();
+	}
+
+	//XTypeLiteral returns XExpression:
+	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
+		return gaXbaseWithAnnotations.getXTypeLiteralAccess();
+	}
+	
+	public ParserRule getXTypeLiteralRule() {
+		return getXTypeLiteralAccess().getRule();
+	}
+
+	//XThrowExpression returns XExpression:
+	//	{XThrowExpression} "throw" expression=XExpression;
+	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
+		return gaXbaseWithAnnotations.getXThrowExpressionAccess();
+	}
+	
+	public ParserRule getXThrowExpressionRule() {
+		return getXThrowExpressionAccess().getRule();
+	}
+
+	//XReturnExpression returns XExpression:
+	//	{XReturnExpression} "return" -> expression=XExpression?;
+	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
+		return gaXbaseWithAnnotations.getXReturnExpressionAccess();
+	}
+	
+	public ParserRule getXReturnExpressionRule() {
+		return getXReturnExpressionAccess().getRule();
+	}
+
+	//XTryCatchFinallyExpression returns XExpression:
+	//	{XTryCatchFinallyExpression} "try" expression=XExpression (catchClauses+=XCatchClause+ ("finally"
+	//	finallyExpression=XExpression)? | "finally" finallyExpression=XExpression);
+	public XbaseGrammarAccess.XTryCatchFinallyExpressionElements getXTryCatchFinallyExpressionAccess() {
+		return gaXbaseWithAnnotations.getXTryCatchFinallyExpressionAccess();
+	}
+	
+	public ParserRule getXTryCatchFinallyExpressionRule() {
+		return getXTryCatchFinallyExpressionAccess().getRule();
+	}
+
+	//XSynchronizedExpression returns XExpression:
+	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
+		return gaXbaseWithAnnotations.getXSynchronizedExpressionAccess();
+	}
+	
+	public ParserRule getXSynchronizedExpressionRule() {
+		return getXSynchronizedExpressionAccess().getRule();
+	}
+
+	//XCatchClause:
+	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
+		return gaXbaseWithAnnotations.getXCatchClauseAccess();
+	}
+	
+	public ParserRule getXCatchClauseRule() {
+		return getXCatchClauseAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaXbaseWithAnnotations.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//Number hidden():
+	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	public XbaseGrammarAccess.NumberElements getNumberAccess() {
+		return gaXbaseWithAnnotations.getNumberAccess();
+	}
+	
+	public ParserRule getNumberRule() {
+		return getNumberAccess().getRule();
+	}
+
+	/// **
+	// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes, 
+	// * which makes downstream grammars break on classloading, when a rule is removed.
+	// * /
+	//StaticQualifier:
+	//	(ValidID "::")+;
+	public XbaseGrammarAccess.StaticQualifierElements getStaticQualifierAccess() {
+		return gaXbaseWithAnnotations.getStaticQualifierAccess();
+	}
+	
+	public ParserRule getStaticQualifierRule() {
+		return getStaticQualifierAccess().getRule();
+	}
+
+	//terminal HEX:
+	//	("0x" | "0X") ("0".."9" | "a".."f" | "A".."F" | "_")+ ("#" (("b" | "B") ("i" | "I") | ("l" | "L")))?;
+	public TerminalRule getHEXRule() {
+		return gaXbaseWithAnnotations.getHEXRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9" ("0".."9" | "_")*;
+	public TerminalRule getINTRule() {
+		return gaXbaseWithAnnotations.getINTRule();
+	} 
+
+	//terminal DECIMAL:
+	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	public TerminalRule getDECIMALRule() {
+		return gaXbaseWithAnnotations.getDECIMALRule();
+	} 
+
+	//JvmTypeReference:
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
+	//	XFunctionTypeRef;
+	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmTypeReferenceRule() {
+		return getJvmTypeReferenceAccess().getRule();
+	}
+
+	//ArrayBrackets:
+	//	"[" "]";
+	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+		return gaXbaseWithAnnotations.getArrayBracketsAccess();
+	}
+	
+	public ParserRule getArrayBracketsRule() {
+		return getArrayBracketsAccess().getRule();
+	}
+
+	//XFunctionTypeRef:
+	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+		return gaXbaseWithAnnotations.getXFunctionTypeRefAccess();
+	}
+	
+	public ParserRule getXFunctionTypeRefRule() {
+		return getXFunctionTypeRefAccess().getRule();
+	}
+
+	//JvmParameterizedTypeReference:
+	//	type=[JvmType|QualifiedName] ("<" arguments+=JvmArgumentTypeReference ("," arguments+=JvmArgumentTypeReference)* ">"
+	//	(=> ({JvmInnerTypeReference.outer=current} ".") type=[JvmType|ValidID] ("<" arguments+=JvmArgumentTypeReference (","
+	//	arguments+=JvmArgumentTypeReference)* ">")?)*)?;
+	public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmParameterizedTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmParameterizedTypeReferenceRule() {
+		return getJvmParameterizedTypeReferenceAccess().getRule();
+	}
+
+	//JvmArgumentTypeReference returns JvmTypeReference:
+	//	JvmTypeReference | JvmWildcardTypeReference;
+	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmArgumentTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmArgumentTypeReferenceRule() {
+		return getJvmArgumentTypeReferenceAccess().getRule();
+	}
+
+	//JvmWildcardTypeReference:
+	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
+	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmWildcardTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmWildcardTypeReferenceRule() {
+		return getJvmWildcardTypeReferenceAccess().getRule();
+	}
+
+	//JvmUpperBound:
+	//	"extends" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+		return gaXbaseWithAnnotations.getJvmUpperBoundAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundRule() {
+		return getJvmUpperBoundAccess().getRule();
+	}
+
+	//JvmUpperBoundAnded returns JvmUpperBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+		return gaXbaseWithAnnotations.getJvmUpperBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundAndedRule() {
+		return getJvmUpperBoundAndedAccess().getRule();
+	}
+
+	//JvmLowerBound:
+	//	"super" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+		return gaXbaseWithAnnotations.getJvmLowerBoundAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundRule() {
+		return getJvmLowerBoundAccess().getRule();
+	}
+
+	//JvmLowerBoundAnded returns JvmLowerBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+		return gaXbaseWithAnnotations.getJvmLowerBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundAndedRule() {
+		return getJvmLowerBoundAndedAccess().getRule();
+	}
+
+	//JvmTypeParameter:
+	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
+	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+		return gaXbaseWithAnnotations.getJvmTypeParameterAccess();
+	}
+	
+	public ParserRule getJvmTypeParameterRule() {
+		return getJvmTypeParameterAccess().getRule();
+	}
+
+	//QualifiedNameWithWildcard:
+	//	QualifiedName "." "*";
+	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+		return gaXbaseWithAnnotations.getQualifiedNameWithWildcardAccess();
+	}
+	
+	public ParserRule getQualifiedNameWithWildcardRule() {
+		return getQualifiedNameWithWildcardAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaXbaseWithAnnotations.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+
+	//XImportSection:
+	//	importDeclarations+=XImportDeclaration+;
+	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+		return gaXbaseWithAnnotations.getXImportSectionAccess();
+	}
+	
+	public ParserRule getXImportSectionRule() {
+		return getXImportSectionAccess().getRule();
+	}
+
+	//XImportDeclaration:
+	//	"import" (static?="static" extension?="extension"? importedType=[JvmDeclaredType|QualifiedNameInStaticImport]
+	//	(wildcard?="*" | memberName=ValidID) | importedType=[JvmDeclaredType|QualifiedName] |
+	//	importedNamespace=QualifiedNameWithWildcard) ";"?;
+	public XtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
+		return gaXbaseWithAnnotations.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+
+	//QualifiedNameInStaticImport:
+	//	(ValidID ".")+;
+	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+		return gaXbaseWithAnnotations.getQualifiedNameInStaticImportAccess();
+	}
+	
+	public ParserRule getQualifiedNameInStaticImportRule() {
+		return getQualifiedNameInStaticImportAccess().getRule();
+	}
+
+	//terminal ID:
+	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaXbaseWithAnnotations.getIDRule();
+	} 
+
+	//terminal STRING:
+	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
+	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	public TerminalRule getSTRINGRule() {
+		return gaXbaseWithAnnotations.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaXbaseWithAnnotations.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaXbaseWithAnnotations.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaXbaseWithAnnotations.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaXbaseWithAnnotations.getANY_OTHERRule();
+	} 
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/validation/AbstractFunctionLibraryDslValidator.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/validation/AbstractFunctionLibraryDslValidator.java
new file mode 100644
index 0000000..552be85
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src-gen/org/eclipse/osbp/xtext/functionlibrarydsl/validation/AbstractFunctionLibraryDslValidator.java
@@ -0,0 +1,35 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.functionlibrarydsl.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.ComposedChecks;
+
+@ComposedChecks(validators= {org.eclipse.osbp.xtext.basic.validation.NamesAreUniqueValidator.class})
+public class AbstractFunctionLibraryDslValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>(super.getEPackages());
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/Xtext/Xbase/XAnnotations"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/Activator.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/Activator.java
new file mode 100644
index 0000000..08c2871
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/Activator.java
@@ -0,0 +1,47 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		Loginfo li = new Loginfo();
+		li.print( Activator.class.getCanonicalName(), Activator.class.getClassLoader());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDsl.xtext b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDsl.xtext
new file mode 100644
index 0000000..65e24d9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDsl.xtext
@@ -0,0 +1,109 @@
+grammar org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDsl with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+
+//generate functionLibraryDSL "http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDsl"
+import "http://osbp.eclipse.org/xtext/functionlibrarydsl/FunctionLibraryDSL"
+
+import "http://osbp.eclipse.org/dsl/common/types/v1"
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore 
+import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
+
+// ??????????????????????????????????????????????????????????????????????????????????????
+// Formelparser aufgrund String siehe JEXL
+// - http://commons.apache.org/proper/commons-jexl/reference/examples.html
+// - Formel wird als String angegeben
+// - wahrscheinlich keine wirkliche syntaktische Prüfung möglich (außer createExpression)
+// - Datentypensicherheit wie?
+// ??????????????????????????????????????????????????????????????????????????????????????
+
+FunctionLibraryModel:
+	pckg=FunctionLibraryPackage;
+
+FunctionLibraryPackage:
+	{FunctionLibraryPackage} 
+	importSection=XImportSection?
+	'package' name=QualifiedName '{'
+		(groups+=(FunctionLibraryGroup|FunctionLibraryBlipGroup|FunctionLibraryConverterGroup|FunctionLibraryStatemachineGroup)|ratings+=FunctionLibraryRating)*
+	'}';
+
+//FunctionLibraryImport:
+//	'import' importedNamespace=QualifiedNameWithWildcard;
+
+FunctionLibraryGroup:
+	'group' name=ValidID '{'
+//		properties+=FunctionLibraryProperty*
+		(functions+=FunctionLibraryFunction|tests+=FunctionLibraryTest|rates+=FunctionLibraryRate)*
+	'}';
+
+FunctionLibraryBlipGroup:
+	'blip-group' name=ValidID '{'
+//		properties+=FunctionLibraryProperty*
+		(functions+=FunctionLibraryFunction|tests+=FunctionLibraryTest|rates+=FunctionLibraryRate)*
+	'}';
+
+FunctionLibraryStatemachineGroup:
+	'statemachine' name=ValidID '{'
+		(operations+=FunctionLibraryOperation|guards+=FunctionLibraryGuard|functions+=FunctionLibraryFunction)*
+	'}';
+
+FunctionLibraryConverterGroup:
+	'converter' name=ValidID '{'
+		'model-datatype' convertToModelDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		'presentation-datatype' convertToPresentationDatatype=[LDataType|TYPE_CROSS_REFERENCE]
+		convertToModel=FunctionConvertToModel
+		convertToPresentation=FunctionConvertToPresentation
+	'}';
+
+FunctionConvertToModel:
+	'to-model' body=XBlockExpression;
+
+FunctionConvertToPresentation:
+	'to-presentation' body=XBlockExpression;
+
+//FunctionLibraryProperty:
+//	'property' name=ValidID 'oftype' oftype=JvmTypeReference;
+
+FunctionLibraryRating:
+	{FunctionLibraryRating} 'rating' name=ValidID '{' (items+=FunctionLibraryRatingItem)* '}';
+
+FunctionLibraryRatingItem:
+	name=ValidID;
+
+FunctionLibraryFunction:
+	'function' name=ValidID '('
+		(params+=FunctionLibraryParameter (',' params+=FunctionLibraryParameter)* )? 
+	')'
+	'returns' oftype=JvmParameterizedTypeReference
+	body=XBlockExpression;
+
+FunctionLibraryTest:
+	'test' name=ValidID '('
+		(params+=FunctionLibraryParameter (',' params+=FunctionLibraryParameter)* )? 
+	')'
+	body=XBlockExpression;
+
+FunctionLibraryRate:
+	'rate' name=ValidID '('
+		(params+=FunctionLibraryParameter (',' params+=FunctionLibraryParameter)* )? 
+	')'
+	'returns' oftype=[FunctionLibraryRating]
+	body=XBlockExpression;
+
+FunctionLibraryGuard:
+	'guard' name=ValidID '('
+		(params+=FunctionLibraryParameter (',' params+=FunctionLibraryParameter)* )? 
+	')'
+	body=XBlockExpression;
+
+FunctionLibraryOperation:
+	'operation' name=ValidID '('
+		(params+=FunctionLibraryParameter (',' params+=FunctionLibraryParameter)* )? 
+	')'
+	body=XBlockExpression;
+
+FunctionLibraryParameter:
+	parameterType=JvmTypeReference name=ValidID 
+//	('requires' requires=XExpression)?
+;
+
+TYPE_CROSS_REFERENCE:
+	ID;
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..c44313f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslBundleSpaceRuntimeModule.java
@@ -0,0 +1,44 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderProvider;
+import org.eclipse.osbp.xtext.builder.types.loader.runtime.TypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.runtime.TypeLoaderProvider;
+
+@SuppressWarnings("restriction")
+public class FunctionLibraryDslBundleSpaceRuntimeModule extends
+		FunctionLibraryDslRuntimeModule {
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+	public Class<? extends ITypeLoaderFactory> bindITypeLoaderFactory() {
+		return TypeLoaderFactory.class;
+	}
+
+	public Class<? extends ITypeLoaderProvider> ITypeLoaderProvider() {
+		return TypeLoaderProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..09176ad
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslBundleSpaceStandaloneSetup.java
@@ -0,0 +1,45 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl;
+
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@SuppressWarnings("restriction")
+public class FunctionLibraryDslBundleSpaceStandaloneSetup extends
+		FunctionLibraryDslStandaloneSetup {
+
+	public static void doSetup() {
+		new FunctionLibraryDslBundleSpaceStandaloneSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	@Override
+	public Injector createInjector() {
+		return Guice
+				.createInjector(new FunctionLibraryDslBundleSpaceRuntimeModule());
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslRuntimeModule.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslRuntimeModule.java
new file mode 100644
index 0000000..92617ed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslRuntimeModule.java
@@ -0,0 +1,85 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl;
+
+import javax.inject.Singleton;
+
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+
+import com.google.inject.Binder;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel.FunctionLibraryModelGenerator;
+import org.eclipse.osbp.xtext.functionlibrarydsl.valueconverter.FunctionLibraryQualifiedNameProvider;
+import org.eclipse.osbp.xtext.functionlibrarydsl.valueconverter.FunctionLibraryValueConverterService;
+import org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+public class FunctionLibraryDslRuntimeModule
+		extends
+		org.eclipse.osbp.xtext.functionlibrarydsl.AbstractFunctionLibraryDslRuntimeModule {
+	@Override
+	public Class<? extends IGenerator> bindIGenerator() {
+		return FunctionLibraryModelGenerator.class;
+	}
+
+	/**
+	 * Only required, if fqn can not be created by appending the names of the
+	 * semantic elements up the hierarchy.
+	 */
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return FunctionLibraryQualifiedNameProvider.class;
+	}
+
+	@Override
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return FunctionLibraryValueConverterService.class;
+	}
+
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(IOutputConfigurationProvider.class)
+				.to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+	}
+
+//	@Override
+//	public Class<? extends IScopeProvider> bindIScopeProvider() {
+//		return FunctionDslScopeProvider.class;
+//	}
+//	
+//	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+//	@SuppressWarnings("restriction")
+//	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+//		return FunctionDslScopeProvider.class;
+//	}
+//
+//	@Override
+//	public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+//		return ScopeProvider.class;
+//	}
+//
+//	@Override
+//	public void configureIScopeProviderDelegate(Binder binder) {
+//		binder.bind(IScopeProvider.class)
+//				.annotatedWith(
+//						Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+//				.to(FunctionLibraryImportedNamespaceAwareLocalScopeProvider.class);
+//	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslStandaloneSetup.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslStandaloneSetup.java
new file mode 100644
index 0000000..8c1dc26
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDslStandaloneSetup.java
@@ -0,0 +1,26 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.functionlibrarydsl;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class FunctionLibraryDslStandaloneSetup extends FunctionLibraryDslStandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new FunctionLibraryDslStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/GenerateFunctionLibraryDsl.mwe2 b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/GenerateFunctionLibraryDsl.mwe2
new file mode 100644
index 0000000..0d30c5e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/GenerateFunctionLibraryDsl.mwe2
@@ -0,0 +1,169 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+module org.eclipse.osbp.xtext.functionlibrarydsl.GenerateFunctionLibraryDsl
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.osbp.dsl.mwe.*
+
+var projectName = "org.eclipse.osbp.xtext.functionlibrarydsl"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/functionlibrarydsl/FunctionLibraryDsl.xtext"
+var fileExtensions = "functionlibrary"
+var runtimeProject = "../${projectName}"
+var generateXtendStub = true
+var encoding = "UTF-8"
+
+Workflow {
+
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+	
+	bean = MavenStandaloneSetup {
+		scanClassPath 				= true
+		platformUri 				= "${runtimeProject}/.."
+		registerGenModelFile 		= "platform:/resource/${projectName}/model/FunctionLibraryDSL.xcore"
+		registerGeneratedEPackage 	= "org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage"
+		
+		registerGenModelFile 		= "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel"
+		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.ecore"
+		registerGenModelFile 		= "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
+		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
+		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
+
+    	// The following two lines can be removed, if Xbase is not used.
+//    	registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
+//    	registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}/src-gen"
+    	exclude = "README.txt"
+    }
+    
+//    component = DirectoryCleaner {
+//    	directory = "${runtimeProject}/model"
+//    	exclude = "README.txt"
+//    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}.ui/src-gen"
+    	exclude = "README.txt"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}.tests/src-gen"
+    	exclude = "README.txt"
+    }
+    
+    component = Generator {
+    	pathRtProject = runtimeProject
+    	pathUiProject = "${runtimeProject}.ui"
+    	pathTestProject = "${runtimeProject}.tests"
+    	projectNameRt = projectName
+    	projectNameUi = "${projectName}.ui"
+    	encoding = encoding
+    	language = auto-inject {
+    		uri = grammarURI
+    
+    		// Java API to access grammar elements (required by several other fragments)
+    		fragment = grammarAccess.GrammarAccessFragment auto-inject {}
+    
+    		// generates Java API for the generated EPackages
+    		fragment = ecore.EMFGeneratorFragment auto-inject {}
+    
+    		// the old serialization component
+    		// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    
+    
+    		// serializer 2.0
+    		fragment = serializer.SerializerFragment auto-inject {
+    			generateStub = false
+    		}
+    
+    		// a custom ResourceFactory for use with EMF
+    		fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
+    
+    		// The antlr parser generator fragment.
+    		fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
+    		//  options = {
+    		//      backtrack = true
+    		//  }
+    		}
+    
+    		// Xtend-based API for validation
+    		fragment = validation.ValidatorFragment auto-inject {
+    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		    composedCheck = "org.eclipse.osbp.xtext.basic.validation.NamesAreUniqueValidator"
+    		}
+    
+    		// old scoping and exporting API
+    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
+    		// fragment = exporting.SimpleNamesFragment auto-inject {}
+    
+    		// scoping and exporting API
+    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
+    		fragment = exporting.QualifiedNamesFragment auto-inject {}
+    		fragment = builder.BuilderIntegrationFragment auto-inject {}
+    
+    		// generator API
+    		fragment = generator.GeneratorFragment auto-inject {}
+    
+    		// formatter API
+    		fragment = formatting.FormatterFragment auto-inject {}
+    
+    		// labeling API
+    		fragment = labeling.LabelProviderFragment auto-inject {}
+    
+    		// outline API
+    		fragment = outline.OutlineTreeProviderFragment auto-inject {}
+    		fragment = outline.QuickOutlineFragment auto-inject {}
+    
+    		// quickfix API
+    		fragment = quickfix.QuickfixProviderFragment auto-inject {}
+    
+    		// content assist API
+    		fragment = contentAssist.ContentAssistFragment auto-inject {}
+    
+    		// generates a more lightweight Antlr parser and lexer tailored for content assist
+    		fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {}
+    
+    		// generates junit test support classes into Generator#pathTestProject
+    		fragment = junit.Junit4Fragment auto-inject {}
+    
+    		// rename refactoring
+    		fragment = refactoring.RefactorElementNameFragment auto-inject {}
+    
+    		// provides the necessary bindings for java types integration
+    		fragment = types.TypesGeneratorFragment auto-inject {}
+    
+    		// generates the required bindings only if the grammar inherits from Xbase
+    		fragment = xbase.XbaseGeneratorFragment auto-inject {}
+    
+    		// provides a preference page for template proposals
+    		fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
+    
+    		// provides a compare view
+    		fragment = compare.CompareFragment auto-inject {}
+    		
+    		// parse grammar and generate i18n grammar
+            fragment = org.eclipse.osbp.xtext.basic.generator.BasicDslGrammarI18nGenerator auto-inject {}
+    	}
+    }
+}
+
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/formatting/FunctionLibraryDslFormatter.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/formatting/FunctionLibraryDslFormatter.xtend
new file mode 100644
index 0000000..169ccde
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/formatting/FunctionLibraryDslFormatter.xtend
@@ -0,0 +1,63 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.formatting
+
+import com.google.inject.Inject
+import org.eclipse.osbp.utils.xtext.GenericFormatter
+//import org.eclipse.osbp.xtext.functionlibrarydsl.services.FunctionLibraryDslGrammarAccess
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
+import org.eclipse.xtext.formatting.impl.FormattingConfig
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
+import org.eclipse.xtext.GrammarUtil
+import org.eclipse.xtext.ParserRule
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation.html#formatting
+ * on how and when to use it 
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+class FunctionLibraryDslFormatter extends AbstractDeclarativeFormatter {
+
+//	@Inject extension FunctionLibraryDslGrammarAccess
+	@Inject XtypeGrammarAccess grammarAccess
+
+	override protected void configureFormatting(FormattingConfig c) {
+		val genericFormatter = new GenericFormatter()
+//		var ParserRule importDef     =  GrammarUtil.findRuleForName( grammar.grammar, "XImportSection"                ) as ParserRule
+		var ParserRule packageDef    =  GrammarUtil.findRuleForName( grammar.grammar, "FunctionLibraryPackage"        ) as ParserRule
+		var ParserRule groupDef      =  GrammarUtil.findRuleForName( grammar.grammar, "FunctionLibraryGroup"          ) as ParserRule
+		var ParserRule convGroupDef  =  GrammarUtil.findRuleForName( grammar.grammar, "FunctionLibraryConverterGroup" ) as ParserRule
+		var ParserRule ratingDef     =  GrammarUtil.findRuleForName( grammar.grammar, "FunctionLibraryRating"         ) as ParserRule
+//		var ParserRule modelConvDef  =  GrammarUtil.findRuleForName( grammar.grammar, "FunctionConvertToModel"        ) as ParserRule
+//		var ParserRule presConvDef   =  GrammarUtil.findRuleForName( grammar.grammar, "FunctionConvertToPresentation" ) as ParserRule
+
+		//	dsl-specific formatting:
+		c.setLinewrap( 2 ).before( packageDef   )
+		c.setLinewrap( 2 ).before( groupDef     )
+		c.setLinewrap( 2 ).before( convGroupDef )
+		c.setLinewrap( 2 ).before( ratingDef    )
+//		c.setNoLinewrap() .before( modelConvDef )
+//		c.setNoLinewrap() .before( presConvDef  )
+
+		//	common formatting:
+		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryDslJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryDslJvmModelInferrer.xtend
new file mode 100644
index 0000000..2df0b94
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryDslJvmModelInferrer.xtend
@@ -0,0 +1,207 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel
+
+import com.google.inject.Inject
+import java.util.HashMap
+import java.util.Locale
+import org.eclipse.emf.common.util.BasicEList
+import org.eclipse.emf.common.util.EList
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.JvmVisibility
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.osgi.service.component.annotations.Component
+import org.slf4j.Logger
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup
+import org.eclipse.osbp.utils.common.EntityUtils
+import org.eclipse.osbp.bpm.api.BlipBaseFunctionGroup
+import org.eclipse.osbp.utils.annotation.CommonUtils
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryPackage
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryGroup
+
+/**
+ * <p>Infers a JVM model from the source model.</p> 
+ *
+ * <p>The JVM model should contain all elements that would appear in the Java code 
+ * which is generated from the source model. Other models link against the JVM model rather than the source model.</p>     
+ */
+class FunctionLibraryDslJvmModelInferrer extends AbstractModelInferrer {
+
+	protected final static class MethodParamHelper {
+		
+		var String name
+		var JvmTypeReference reference 
+		
+		new (String aname, JvmTypeReference areference) {
+			name = aname
+			reference = areference
+		}
+	}
+    
+    val public static FUNCTION_LIBRARY_PACKAGE = "FunctionLibraryPackage"
+
+    /**
+     * generate the class name for a mock entity
+     */
+    def static String getFunctionLibraryPackageName(FunctionLibraryPackage pckg) {
+        var pckgName = '''«pckg.name»'''
+        return pckgName
+    }
+
+    /**
+     * convenience API to build and initialize JVM types and their members.
+     */
+	@Inject extension JvmTypesBuilder
+	@Inject extension CommonUtils
+	
+   	def dispatch void infer(FunctionLibraryPackage pkg, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
+   		
+        try {
+	        val generatorName = '''«FunctionLibraryDslJvmModelInferrer.getFunctionLibraryPackageName(pkg)».«FunctionLibraryDslJvmModelInferrer.FUNCTION_LIBRARY_PACKAGE»'''
+			acceptor.accept(pkg.toClass(generatorName)) [
+			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Component))
+			annotationRef.addAnnAttr(pkg, "service", _typeReferenceBuilder.typeRef(IFunctionLibraryPackage) as JvmTypeReference)
+			annotations += annotationRef
+	            superTypes += _typeReferenceBuilder.typeRef(typeof(IFunctionLibraryPackage))
+	            final = true
+			]
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+   		
+		pkg.ratings.forEach[ rating |
+			try {
+				acceptor.accept(rating.toEnumerationType(pkg.name.concat(".").concat(rating.name))[],
+					[
+						documentation = rating.documentation
+						rating.items.forEach [ item |
+							it.members += pkg.toEnumerationLiteral(item.name)[
+								documentation = item.documentation
+							]
+						]
+					]
+				)
+			}
+			catch (Exception e) {
+                e.printStackTrace();
+			}
+		]
+		
+		pkg.groups.forEach[ group |
+			try {
+				acceptor.accept(pkg.toClass(pkg.name.concat(".").concat(group.name)),
+					[
+			            superTypes += _typeReferenceBuilder.typeRef(IFunctionLibraryGroup)
+			            if	(group instanceof FunctionLibraryBlipGroup) {
+			            	superTypes += _typeReferenceBuilder.typeRef(BlipBaseFunctionGroup)
+			            }
+						documentation = group.documentation
+						it.toFields(group)
+						final = true
+						group.functions.forEach[ function |
+							it.members += function.toMethod(function.oftype ?: inferredType)
+						]
+						group.operations.forEach[ operation |
+							it.members += operation.toMethod(_typeReferenceBuilder.typeRef(boolean))
+						]
+						group.rates.forEach[ rate |
+							it.members += rate.toMethod(_typeReferenceBuilder.typeRef(pkg.name.concat(".").concat(rate.oftype.name)))
+						]
+						group.tests.forEach[ test |
+							it.members += test.toMethod(_typeReferenceBuilder.typeRef(boolean))
+						]
+						group.guards.forEach[ guard |
+							it.members += guard.toMethod(_typeReferenceBuilder.typeRef(boolean))
+						]
+						if (group instanceof FunctionLibraryConverterGroup){
+							var converterGroup = (group as FunctionLibraryConverterGroup)
+							if	(converterGroup.convertToModel != null) {
+								var mustParams = new BasicEList()
+								mustParams.add(new MethodParamHelper("presentationValue", converterGroup.convertToModelDatatype.jvmTypeReference))
+								mustParams.add(new MethodParamHelper("presentationLocale", _typeReferenceBuilder.typeRef(Locale)))
+								mustParams.add(new MethodParamHelper("presentationParams", _jvmTypesBuilder.addArrayTypeDimension(_typeReferenceBuilder.typeRef(Object))))
+								it.members += converterGroup.convertToModel.toMethod("valueToModelConverter", converterGroup.convertToModelDatatype.jvmTypeReference, mustParams)
+							}
+							if	(converterGroup.convertToPresentation != null) {
+								var mustParams = new BasicEList()
+								mustParams.add(new MethodParamHelper("modelValue", converterGroup.convertToModelDatatype.jvmTypeReference))
+								mustParams.add(new MethodParamHelper("modelLocale", _typeReferenceBuilder.typeRef(Locale)))
+								mustParams.add(new MethodParamHelper("modelParams", _jvmTypesBuilder.addArrayTypeDimension(_typeReferenceBuilder.typeRef(Object))))
+								it.members += converterGroup.convertToPresentation.toMethod("valueToPresentationConverter", converterGroup.convertToPresentationDatatype.jvmTypeReference, mustParams)
+							}
+						}
+					]
+				)
+			}
+			catch (Exception e) {
+                e.printStackTrace();
+			}
+		]
+   	}
+   	
+//   	def JvmWildcardTypeReference wildCardSuper(JvmTypeReference clone) {
+//        JvmWildcardTypeReference result = factory.createJvmWildcardTypeReference();
+//        JvmLowerBound lowerBound = factory.createJvmLowerBound();
+//        lowerBound.setTypeReference(clone);
+//        result.getConstraints().add(lowerBound);
+//        return result;
+//}
+   	
+   	def JvmOperation toMethod(FunctionLibraryBaseFunction baseFunction, JvmTypeReference returnType) {
+   		return baseFunction.toMethod(baseFunction.name, returnType, null)
+   	}
+   	
+   	def JvmOperation toMethod(FunctionLibraryBaseFunction baseFunction, String methodName, JvmTypeReference returnType, EList<MethodParamHelper> mustParams) {
+   		return baseFunction.toMethod(methodName, returnType) [
+			documentation = baseFunction.documentation
+			if	(mustParams != null) {
+				for (param : mustParams) {
+					parameters += baseFunction.toParameter(param.name, param.reference);
+				}
+			}
+			for (param : baseFunction.params) {
+				parameters += param.toParameter(param.name, param.parameterType);
+			}
+			static = true
+			final = true
+			visibility = JvmVisibility.PUBLIC
+			body = baseFunction.body
+		]
+   	}
+   	
+	def void toFields(JvmGenericType type, FunctionLibraryGroup group) {
+   		var JvmField field = null
+   		// create logger
+		field = group.toField("log", _typeReferenceBuilder.typeRef(Logger))[setInitializer([append('''org.slf4j.LoggerFactory.getLogger("functiongroup")''')])]
+   		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+	}
+}
+
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryModelGenerator.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryModelGenerator.xtend
new file mode 100644
index 0000000..86b080f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryModelGenerator.xtend
@@ -0,0 +1,45 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel
+
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.osbp.bpm.api.BlipBaseFunctionGroup
+import org.eclipse.osbp.xtext.addons.AdvancedJvmModelGenerator
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig
+import org.eclipse.xtext.xbase.compiler.ImportManager
+import org.osgi.framework.FrameworkUtil
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryGroup
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryPackage
+
+class FunctionLibraryModelGenerator extends AdvancedJvmModelGenerator {
+	@Inject extension BasicDslGeneratorUtils
+	override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) {
+		// required to initialize the needed builder to avoid deprecated methods
+		builder = context.eResource
+		// ---------
+		addImportFor(importManager, _typeReferenceBuilder
+			, BlipBaseFunctionGroup
+			, FrameworkUtil
+			, IFunctionLibraryGroup
+			, IFunctionLibraryPackage
+		)
+		super.createAppendable(context, importManager, config)
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/util/Library.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/util/Library.java
new file mode 100644
index 0000000..94c62fa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/util/Library.java
@@ -0,0 +1,95 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.functionlibrarydsl.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.osbp.ui.api.user.IUser;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedPosition;
+import org.eclipse.osbp.xtext.table.common.PositionInfo;
+import org.jbpm.task.Status;
+import org.jbpm.task.query.TaskSummary;
+
+
+public class Library {
+	
+	public final static class Context extends HashMap<String, Object> {
+		private static final long serialVersionUID = -2810090198332954979L;
+		
+		public final static String USER = "user";
+		public final static String TABLE = "table";
+		public final static String TASKSUMMARY = "taskSummary";
+	}
+	
+	static boolean toogleState = false; 
+	static long lastTime = 0L;
+	public static boolean timerToggle(long ms) {
+		if (System.currentTimeMillis() - lastTime > ms) {
+			lastTime = System.currentTimeMillis();
+			toogleState ^= true;
+		}
+		return toogleState;
+	}
+	
+	public static String getUserName(Context contextMap) {
+		if (contextMap != null && contextMap.containsKey(Context.USER)) {
+			IUser user = (IUser)contextMap.get(Context.USER);
+			return user.getUserName();
+		}
+		return null;  
+	}
+	
+	public static Object getTableColumnValue(Context contextMap, String columnName) {
+		if (columnName != null && contextMap != null && contextMap.containsKey(Context.TABLE)) {
+			Map<Integer, PositionInfo> positionMap = (Map<Integer, PositionInfo>) contextMap.get(Context.TABLE);
+			for(Integer column : positionMap.keySet()) {
+				DerivedPosition pos = positionMap.get(column).getPosition();
+				if(pos.toUnformattedString().equalsIgnoreCase(columnName)) {
+					return positionMap.get(column).getSelectedValue();
+				}
+			}
+		}
+		return null;
+	}
+
+	public static long getTaskId(Context contextMap) {
+		if (contextMap != null && contextMap.containsKey(Context.TASKSUMMARY)) {
+			TaskSummary task = (TaskSummary) contextMap.get(Context.TASKSUMMARY);
+			if (task != null) {
+				return task.getId();
+			}
+		}
+		return 0;
+	}
+	
+	public static boolean isTask(Context contextMap, Status status) {
+		if (contextMap != null && contextMap.containsKey(Context.TASKSUMMARY)) {
+			TaskSummary task = (TaskSummary) contextMap.get(Context.TASKSUMMARY);
+			if(task != null && task.getStatus() != null && task.getStatus().toString().equalsIgnoreCase(status.toString())) {
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	public static Status getStatusType(int code) {
+		for(Status type : Status.values()) {
+			if(type.ordinal() == code) {
+				return type;
+			}
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/validation/FunctionLibraryDslValidator.xtend b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/validation/FunctionLibraryDslValidator.xtend
new file mode 100644
index 0000000..48781fe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/validation/FunctionLibraryDslValidator.xtend
@@ -0,0 +1,38 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.functionlibrarydsl.validation
+//import org.eclipse.xtext.validation.Check
+
+/**
+ * Custom validation rules. 
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+class FunctionLibraryDslValidator extends AbstractFunctionLibraryDslValidator {
+
+//  public static val INVALID_NAME = 'invalidName'
+//
+//	@Check
+//	def checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.name.charAt(0))) {
+//			warning('Name should start with a capital', 
+//					MyDslPackage.Literals.GREETING__NAME,
+//					INVALID_NAME)
+//		}
+//	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/valueconverter/FunctionLibraryQualifiedNameProvider.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/valueconverter/FunctionLibraryQualifiedNameProvider.java
new file mode 100644
index 0000000..1363bb6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/valueconverter/FunctionLibraryQualifiedNameProvider.java
@@ -0,0 +1,65 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms 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.functionlibrarydsl.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class FunctionLibraryQualifiedNameProvider extends XbaseQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+		
+		if (obj instanceof FunctionLibraryGroup) {
+			FunctionLibraryGroup group = (FunctionLibraryGroup) obj;
+			if (group.getName() == null) {
+				return null;
+			}
+			return qualifiedNameConverter.toQualifiedName(group.getName());
+		} else if (obj instanceof FunctionLibraryRating) {
+			FunctionLibraryRating rating = (FunctionLibraryRating) obj;
+				if (rating.getName() == null) {
+					return null;
+				}
+				return qualifiedNameConverter.toQualifiedName(rating.getName());
+		} else if (obj instanceof FunctionLibraryRatingItem) {
+			FunctionLibraryRatingItem ratingItem = (FunctionLibraryRatingItem) obj;
+			if (ratingItem.getName() == null) {
+				return null;
+			}
+			return qualifiedNameConverter.toQualifiedName(ratingItem.getName());
+		} else if (obj instanceof FunctionLibraryFunction) {
+			FunctionLibraryFunction function = (FunctionLibraryFunction) obj;
+			if (function.getName() == null) {
+				return null;
+			}
+			return qualifiedNameConverter.toQualifiedName(function.getName());
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/valueconverter/FunctionLibraryValueConverterService.java b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/valueconverter/FunctionLibraryValueConverterService.java
new file mode 100644
index 0000000..2651a8b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/src/org/eclipse/osbp/xtext/functionlibrarydsl/valueconverter/FunctionLibraryValueConverterService.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.valueconverter;
+
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.xtext.xbase.conversion.XbaseValueConverterService;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonValueConverterService.TypeCrossReferenceValueConverter;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@SuppressWarnings("restriction")
+@Singleton
+public class FunctionLibraryValueConverterService extends XbaseValueConverterService {
+
+	@Inject
+	private TypeCrossReferenceValueConverter crossRefConverter;
+	
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+	@ValueConverter(rule = "TYPE_CROSS_REFERENCE")
+	public TypeCrossReferenceValueConverter getTypeCrossReferenceValueConverter() {
+		return crossRefConverter;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/formatting/FunctionLibraryDslFormatter.java b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/formatting/FunctionLibraryDslFormatter.java
new file mode 100644
index 0000000..88ebbc8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/formatting/FunctionLibraryDslFormatter.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.formatting;
+
+import com.google.inject.Inject;
+import org.eclipse.osbp.utils.xtext.GenericFormatter;
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation.html#formatting
+ * on how and when to use it
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslFormatter extends AbstractDeclarativeFormatter {
+  @Inject
+  private XtypeGrammarAccess grammarAccess;
+  
+  protected void configureFormatting(final FormattingConfig c) {
+    final GenericFormatter genericFormatter = new GenericFormatter();
+    Grammar _grammar = this.grammar.getGrammar();
+    AbstractRule _findRuleForName = GrammarUtil.findRuleForName(_grammar, "FunctionLibraryPackage");
+    ParserRule packageDef = ((ParserRule) _findRuleForName);
+    Grammar _grammar_1 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_1 = GrammarUtil.findRuleForName(_grammar_1, "FunctionLibraryGroup");
+    ParserRule groupDef = ((ParserRule) _findRuleForName_1);
+    Grammar _grammar_2 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_2 = GrammarUtil.findRuleForName(_grammar_2, "FunctionLibraryConverterGroup");
+    ParserRule convGroupDef = ((ParserRule) _findRuleForName_2);
+    Grammar _grammar_3 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_3 = GrammarUtil.findRuleForName(_grammar_3, "FunctionLibraryRating");
+    ParserRule ratingDef = ((ParserRule) _findRuleForName_3);
+    FormattingConfig.LinewrapLocator _setLinewrap = c.setLinewrap(2);
+    _setLinewrap.before(packageDef);
+    FormattingConfig.LinewrapLocator _setLinewrap_1 = c.setLinewrap(2);
+    _setLinewrap_1.before(groupDef);
+    FormattingConfig.LinewrapLocator _setLinewrap_2 = c.setLinewrap(2);
+    _setLinewrap_2.before(convGroupDef);
+    FormattingConfig.LinewrapLocator _setLinewrap_3 = c.setLinewrap(2);
+    _setLinewrap_3.before(ratingDef);
+    genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryDslJvmModelInferrer.java b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryDslJvmModelInferrer.java
new file mode 100644
index 0000000..734d1b7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryDslJvmModelInferrer.java
@@ -0,0 +1,408 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel;
+
+import com.google.common.base.Objects;
+import com.google.inject.Inject;
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.function.Consumer;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.bpm.api.BlipBaseFunctionGroup;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryGroup;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryPackage;
+import org.eclipse.osbp.utils.annotation.CommonUtils;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToModel;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionConvertToPresentation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBaseFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryConverterGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGuard;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryOperation;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRate;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRating;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryRatingItem;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryTest;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmEnumerationLiteral;
+import org.eclipse.xtext.common.types.JvmEnumerationType;
+import org.eclipse.xtext.common.types.JvmField;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.JvmMember;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.xbase.XExpression;
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.lib.Exceptions;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+import org.osgi.service.component.annotations.Component;
+import org.slf4j.Logger;
+
+/**
+ * <p>Infers a JVM model from the source model.</p>
+ * 
+ * <p>The JVM model should contain all elements that would appear in the Java code
+ * which is generated from the source model. Other models link against the JVM model rather than the source model.</p>
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslJvmModelInferrer extends AbstractModelInferrer {
+  protected static final class MethodParamHelper {
+    private String name;
+    
+    private JvmTypeReference reference;
+    
+    public MethodParamHelper(final String aname, final JvmTypeReference areference) {
+      this.name = aname;
+      this.reference = areference;
+    }
+  }
+  
+  public final static String FUNCTION_LIBRARY_PACKAGE = "FunctionLibraryPackage";
+  
+  /**
+   * generate the class name for a mock entity
+   */
+  public static String getFunctionLibraryPackageName(final FunctionLibraryPackage pckg) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _name = pckg.getName();
+    _builder.append(_name, "");
+    String pckgName = _builder.toString();
+    return pckgName;
+  }
+  
+  /**
+   * convenience API to build and initialize JVM types and their members.
+   */
+  @Inject
+  @Extension
+  private JvmTypesBuilder _jvmTypesBuilder;
+  
+  @Inject
+  @Extension
+  private CommonUtils _commonUtils;
+  
+  protected void _infer(final FunctionLibraryPackage pkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      String _functionLibraryPackageName = FunctionLibraryDslJvmModelInferrer.getFunctionLibraryPackageName(pkg);
+      _builder.append(_functionLibraryPackageName, "");
+      _builder.append(".");
+      _builder.append(FunctionLibraryDslJvmModelInferrer.FUNCTION_LIBRARY_PACKAGE, "");
+      final String generatorName = _builder.toString();
+      JvmGenericType _class = this._jvmTypesBuilder.toClass(pkg, generatorName);
+      final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
+        public void apply(final JvmGenericType it) {
+          JvmAnnotationReference annotationRef = FunctionLibraryDslJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Component.class);
+          JvmTypeReference _typeRef = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(IFunctionLibraryPackage.class);
+          FunctionLibraryDslJvmModelInferrer.this._commonUtils.addAnnAttr(annotationRef, pkg, "service", ((JvmTypeReference) _typeRef));
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+          JvmTypeReference _typeRef_1 = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(IFunctionLibraryPackage.class);
+          FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef_1);
+          it.setFinal(true);
+        }
+      };
+      acceptor.<JvmGenericType>accept(_class, _function);
+    } catch (final Throwable _t) {
+      if (_t instanceof Exception) {
+        final Exception e = (Exception)_t;
+        e.printStackTrace();
+      } else {
+        throw Exceptions.sneakyThrow(_t);
+      }
+    }
+    EList<FunctionLibraryRating> _ratings = pkg.getRatings();
+    final Consumer<FunctionLibraryRating> _function_1 = new Consumer<FunctionLibraryRating>() {
+      public void accept(final FunctionLibraryRating rating) {
+        try {
+          String _name = pkg.getName();
+          String _concat = _name.concat(".");
+          String _name_1 = rating.getName();
+          String _concat_1 = _concat.concat(_name_1);
+          final Procedure1<JvmEnumerationType> _function = new Procedure1<JvmEnumerationType>() {
+            public void apply(final JvmEnumerationType it) {
+            }
+          };
+          JvmEnumerationType _enumerationType = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.toEnumerationType(rating, _concat_1, _function);
+          final Procedure1<JvmEnumerationType> _function_1 = new Procedure1<JvmEnumerationType>() {
+            public void apply(final JvmEnumerationType it) {
+              String _documentation = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(rating);
+              FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, _documentation);
+              EList<FunctionLibraryRatingItem> _items = rating.getItems();
+              final Consumer<FunctionLibraryRatingItem> _function = new Consumer<FunctionLibraryRatingItem>() {
+                public void accept(final FunctionLibraryRatingItem item) {
+                  EList<JvmMember> _members = it.getMembers();
+                  String _name = item.getName();
+                  final Procedure1<JvmEnumerationLiteral> _function = new Procedure1<JvmEnumerationLiteral>() {
+                    public void apply(final JvmEnumerationLiteral it) {
+                      String _documentation = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(item);
+                      FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, _documentation);
+                    }
+                  };
+                  JvmEnumerationLiteral _enumerationLiteral = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.toEnumerationLiteral(pkg, _name, _function);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmEnumerationLiteral>operator_add(_members, _enumerationLiteral);
+                }
+              };
+              _items.forEach(_function);
+            }
+          };
+          acceptor.<JvmEnumerationType>accept(_enumerationType, _function_1);
+        } catch (final Throwable _t) {
+          if (_t instanceof Exception) {
+            final Exception e = (Exception)_t;
+            e.printStackTrace();
+          } else {
+            throw Exceptions.sneakyThrow(_t);
+          }
+        }
+      }
+    };
+    _ratings.forEach(_function_1);
+    EList<FunctionLibraryGroup> _groups = pkg.getGroups();
+    final Consumer<FunctionLibraryGroup> _function_2 = new Consumer<FunctionLibraryGroup>() {
+      public void accept(final FunctionLibraryGroup group) {
+        try {
+          String _name = pkg.getName();
+          String _concat = _name.concat(".");
+          String _name_1 = group.getName();
+          String _concat_1 = _concat.concat(_name_1);
+          JvmGenericType _class = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.toClass(pkg, _concat_1);
+          final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
+            public void apply(final JvmGenericType it) {
+              EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+              JvmTypeReference _typeRef = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(IFunctionLibraryGroup.class);
+              FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+              if ((group instanceof FunctionLibraryBlipGroup)) {
+                EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
+                JvmTypeReference _typeRef_1 = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(BlipBaseFunctionGroup.class);
+                FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeRef_1);
+              }
+              String _documentation = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(group);
+              FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, _documentation);
+              FunctionLibraryDslJvmModelInferrer.this.toFields(it, group);
+              it.setFinal(true);
+              EList<FunctionLibraryFunction> _functions = group.getFunctions();
+              final Consumer<FunctionLibraryFunction> _function = new Consumer<FunctionLibraryFunction>() {
+                public void accept(final FunctionLibraryFunction function) {
+                  EList<JvmMember> _members = it.getMembers();
+                  JvmTypeReference _elvis = null;
+                  JvmParameterizedTypeReference _oftype = function.getOftype();
+                  if (_oftype != null) {
+                    _elvis = _oftype;
+                  } else {
+                    JvmTypeReference _inferredType = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.inferredType();
+                    _elvis = _inferredType;
+                  }
+                  JvmOperation _method = FunctionLibraryDslJvmModelInferrer.this.toMethod(function, _elvis);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+                }
+              };
+              _functions.forEach(_function);
+              EList<FunctionLibraryOperation> _operations = group.getOperations();
+              final Consumer<FunctionLibraryOperation> _function_1 = new Consumer<FunctionLibraryOperation>() {
+                public void accept(final FunctionLibraryOperation operation) {
+                  EList<JvmMember> _members = it.getMembers();
+                  JvmTypeReference _typeRef = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(boolean.class);
+                  JvmOperation _method = FunctionLibraryDslJvmModelInferrer.this.toMethod(operation, _typeRef);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+                }
+              };
+              _operations.forEach(_function_1);
+              EList<FunctionLibraryRate> _rates = group.getRates();
+              final Consumer<FunctionLibraryRate> _function_2 = new Consumer<FunctionLibraryRate>() {
+                public void accept(final FunctionLibraryRate rate) {
+                  EList<JvmMember> _members = it.getMembers();
+                  String _name = pkg.getName();
+                  String _concat = _name.concat(".");
+                  FunctionLibraryRating _oftype = rate.getOftype();
+                  String _name_1 = _oftype.getName();
+                  String _concat_1 = _concat.concat(_name_1);
+                  JvmTypeReference _typeRef = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(_concat_1);
+                  JvmOperation _method = FunctionLibraryDslJvmModelInferrer.this.toMethod(rate, _typeRef);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+                }
+              };
+              _rates.forEach(_function_2);
+              EList<FunctionLibraryTest> _tests = group.getTests();
+              final Consumer<FunctionLibraryTest> _function_3 = new Consumer<FunctionLibraryTest>() {
+                public void accept(final FunctionLibraryTest test) {
+                  EList<JvmMember> _members = it.getMembers();
+                  JvmTypeReference _typeRef = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(boolean.class);
+                  JvmOperation _method = FunctionLibraryDslJvmModelInferrer.this.toMethod(test, _typeRef);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+                }
+              };
+              _tests.forEach(_function_3);
+              EList<FunctionLibraryGuard> _guards = group.getGuards();
+              final Consumer<FunctionLibraryGuard> _function_4 = new Consumer<FunctionLibraryGuard>() {
+                public void accept(final FunctionLibraryGuard guard) {
+                  EList<JvmMember> _members = it.getMembers();
+                  JvmTypeReference _typeRef = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(boolean.class);
+                  JvmOperation _method = FunctionLibraryDslJvmModelInferrer.this.toMethod(guard, _typeRef);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+                }
+              };
+              _guards.forEach(_function_4);
+              if ((group instanceof FunctionLibraryConverterGroup)) {
+                FunctionLibraryConverterGroup converterGroup = ((FunctionLibraryConverterGroup) group);
+                FunctionConvertToModel _convertToModel = converterGroup.getConvertToModel();
+                boolean _notEquals = (!Objects.equal(_convertToModel, null));
+                if (_notEquals) {
+                  BasicEList<FunctionLibraryDslJvmModelInferrer.MethodParamHelper> mustParams = new BasicEList<FunctionLibraryDslJvmModelInferrer.MethodParamHelper>();
+                  LDataType _convertToModelDatatype = converterGroup.getConvertToModelDatatype();
+                  JvmTypeReference _jvmTypeReference = _convertToModelDatatype.getJvmTypeReference();
+                  FunctionLibraryDslJvmModelInferrer.MethodParamHelper _methodParamHelper = new FunctionLibraryDslJvmModelInferrer.MethodParamHelper("presentationValue", _jvmTypeReference);
+                  mustParams.add(_methodParamHelper);
+                  JvmTypeReference _typeRef_2 = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(Locale.class);
+                  FunctionLibraryDslJvmModelInferrer.MethodParamHelper _methodParamHelper_1 = new FunctionLibraryDslJvmModelInferrer.MethodParamHelper("presentationLocale", _typeRef_2);
+                  mustParams.add(_methodParamHelper_1);
+                  JvmTypeReference _typeRef_3 = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(Object.class);
+                  JvmTypeReference _addArrayTypeDimension = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.addArrayTypeDimension(_typeRef_3);
+                  FunctionLibraryDslJvmModelInferrer.MethodParamHelper _methodParamHelper_2 = new FunctionLibraryDslJvmModelInferrer.MethodParamHelper("presentationParams", _addArrayTypeDimension);
+                  mustParams.add(_methodParamHelper_2);
+                  EList<JvmMember> _members = it.getMembers();
+                  FunctionConvertToModel _convertToModel_1 = converterGroup.getConvertToModel();
+                  LDataType _convertToModelDatatype_1 = converterGroup.getConvertToModelDatatype();
+                  JvmTypeReference _jvmTypeReference_1 = _convertToModelDatatype_1.getJvmTypeReference();
+                  JvmOperation _method = FunctionLibraryDslJvmModelInferrer.this.toMethod(_convertToModel_1, "valueToModelConverter", _jvmTypeReference_1, mustParams);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+                }
+                FunctionConvertToPresentation _convertToPresentation = converterGroup.getConvertToPresentation();
+                boolean _notEquals_1 = (!Objects.equal(_convertToPresentation, null));
+                if (_notEquals_1) {
+                  BasicEList<FunctionLibraryDslJvmModelInferrer.MethodParamHelper> mustParams_1 = new BasicEList<FunctionLibraryDslJvmModelInferrer.MethodParamHelper>();
+                  LDataType _convertToModelDatatype_2 = converterGroup.getConvertToModelDatatype();
+                  JvmTypeReference _jvmTypeReference_2 = _convertToModelDatatype_2.getJvmTypeReference();
+                  FunctionLibraryDslJvmModelInferrer.MethodParamHelper _methodParamHelper_3 = new FunctionLibraryDslJvmModelInferrer.MethodParamHelper("modelValue", _jvmTypeReference_2);
+                  mustParams_1.add(_methodParamHelper_3);
+                  JvmTypeReference _typeRef_4 = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(Locale.class);
+                  FunctionLibraryDslJvmModelInferrer.MethodParamHelper _methodParamHelper_4 = new FunctionLibraryDslJvmModelInferrer.MethodParamHelper("modelLocale", _typeRef_4);
+                  mustParams_1.add(_methodParamHelper_4);
+                  JvmTypeReference _typeRef_5 = FunctionLibraryDslJvmModelInferrer.this._typeReferenceBuilder.typeRef(Object.class);
+                  JvmTypeReference _addArrayTypeDimension_1 = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.addArrayTypeDimension(_typeRef_5);
+                  FunctionLibraryDslJvmModelInferrer.MethodParamHelper _methodParamHelper_5 = new FunctionLibraryDslJvmModelInferrer.MethodParamHelper("modelParams", _addArrayTypeDimension_1);
+                  mustParams_1.add(_methodParamHelper_5);
+                  EList<JvmMember> _members_1 = it.getMembers();
+                  FunctionConvertToPresentation _convertToPresentation_1 = converterGroup.getConvertToPresentation();
+                  LDataType _convertToPresentationDatatype = converterGroup.getConvertToPresentationDatatype();
+                  JvmTypeReference _jvmTypeReference_3 = _convertToPresentationDatatype.getJvmTypeReference();
+                  JvmOperation _method_1 = FunctionLibraryDslJvmModelInferrer.this.toMethod(_convertToPresentation_1, "valueToPresentationConverter", _jvmTypeReference_3, mustParams_1);
+                  FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+                }
+              }
+            }
+          };
+          acceptor.<JvmGenericType>accept(_class, _function);
+        } catch (final Throwable _t) {
+          if (_t instanceof Exception) {
+            final Exception e = (Exception)_t;
+            e.printStackTrace();
+          } else {
+            throw Exceptions.sneakyThrow(_t);
+          }
+        }
+      }
+    };
+    _groups.forEach(_function_2);
+  }
+  
+  public JvmOperation toMethod(final FunctionLibraryBaseFunction baseFunction, final JvmTypeReference returnType) {
+    String _name = baseFunction.getName();
+    return this.toMethod(baseFunction, _name, returnType, null);
+  }
+  
+  public JvmOperation toMethod(final FunctionLibraryBaseFunction baseFunction, final String methodName, final JvmTypeReference returnType, final EList<FunctionLibraryDslJvmModelInferrer.MethodParamHelper> mustParams) {
+    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        String _documentation = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(baseFunction);
+        FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, _documentation);
+        boolean _notEquals = (!Objects.equal(mustParams, null));
+        if (_notEquals) {
+          for (final FunctionLibraryDslJvmModelInferrer.MethodParamHelper param : mustParams) {
+            EList<JvmFormalParameter> _parameters = it.getParameters();
+            JvmFormalParameter _parameter = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.toParameter(baseFunction, param.name, param.reference);
+            FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          }
+        }
+        EList<FunctionLibraryParameter> _params = baseFunction.getParams();
+        for (final FunctionLibraryParameter param_1 : _params) {
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          String _name = param_1.getName();
+          JvmTypeReference _parameterType = param_1.getParameterType();
+          JvmFormalParameter _parameter_1 = FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.toParameter(param_1, _name, _parameterType);
+          FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        }
+        it.setStatic(true);
+        it.setFinal(true);
+        it.setVisibility(JvmVisibility.PUBLIC);
+        XExpression _body = baseFunction.getBody();
+        FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _body);
+      }
+    };
+    return this._jvmTypesBuilder.toMethod(baseFunction, methodName, returnType, _function);
+  }
+  
+  public void toFields(final JvmGenericType type, final FunctionLibraryGroup group) {
+    JvmField field = null;
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Logger.class);
+    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("org.slf4j.LoggerFactory.getLogger(\"functiongroup\")");
+            it.append(_builder);
+          }
+        };
+        FunctionLibraryDslJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(group, "log", _typeRef, _function);
+    field = _field;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+  }
+  
+  public void infer(final EObject pkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    if (pkg instanceof FunctionLibraryPackage) {
+      _infer((FunctionLibraryPackage)pkg, acceptor, isPreIndexingPhase);
+      return;
+    } else if (pkg != null) {
+      _infer(pkg, acceptor, isPreIndexingPhase);
+      return;
+    } else {
+      throw new IllegalArgumentException("Unhandled parameter types: " +
+        Arrays.<Object>asList(pkg, acceptor, isPreIndexingPhase).toString());
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryModelGenerator.java b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryModelGenerator.java
new file mode 100644
index 0000000..8835e1f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/jvmmodel/FunctionLibraryModelGenerator.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.jvmmodel;
+
+import javax.inject.Inject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.bpm.api.BlipBaseFunctionGroup;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryGroup;
+import org.eclipse.osbp.ui.api.functionlibrary.IFunctionLibraryPackage;
+import org.eclipse.osbp.xtext.addons.AdvancedJvmModelGenerator;
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
+import org.eclipse.xtext.xbase.compiler.ImportManager;
+import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.osgi.framework.FrameworkUtil;
+
+@SuppressWarnings("all")
+public class FunctionLibraryModelGenerator extends AdvancedJvmModelGenerator {
+  @Inject
+  @Extension
+  private BasicDslGeneratorUtils _basicDslGeneratorUtils;
+  
+  public TreeAppendable createAppendable(final EObject context, final ImportManager importManager, final GeneratorConfig config) {
+    TreeAppendable _xblockexpression = null;
+    {
+      Resource _eResource = context.eResource();
+      this.setBuilder(_eResource);
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, BlipBaseFunctionGroup.class, FrameworkUtil.class, IFunctionLibraryGroup.class, IFunctionLibraryPackage.class);
+      _xblockexpression = super.createAppendable(context, importManager, config);
+    }
+    return _xblockexpression;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/validation/FunctionLibraryDslValidator.java b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/validation/FunctionLibraryDslValidator.java
new file mode 100644
index 0000000..ab46d0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.functionlibrarydsl/xtend-gen/org/eclipse/osbp/xtext/functionlibrarydsl/validation/FunctionLibraryDslValidator.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.functionlibrarydsl.validation;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.validation.AbstractFunctionLibraryDslValidator;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("all")
+public class FunctionLibraryDslValidator extends AbstractFunctionLibraryDslValidator {
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..53f7641
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.osbp.releng.maven</groupId>
+		<artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath/>
+	</parent>
+
+	<groupId>org.eclipse.osbp.xtext.functionlibrarydsl</groupId>
+	<artifactId>org.eclipse.osbp.xtext.functionlibrarydsl.aggregator</artifactId>
+	<version>0.9.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<url>${osbp.site.repository.url}</url>
+	<scm>
+		<url>${osbp.scm.url}</url>
+		<connection>${osbp.scm.connection}</connection>
+		<developerConnection>${osbp.scm.connection.dev}</developerConnection>
+		<tag>HEAD</tag>
+	</scm>
+	<distributionManagement>
+		<site>
+			<id>gh-pages</id>
+			<name>OSBP GitHub Pages</name>
+			<url>${distribution.site.url}</url>
+		</site>
+	</distributionManagement>
+
+	<properties>
+		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+	</properties>
+
+	<modules>
+		<module>org.eclipse.osbp.xtext.functionlibrarydsl</module>
+		<module>org.eclipse.osbp.xtext.functionlibrarydsl.provider</module>
+		<module>org.eclipse.osbp.xtext.functionlibrarydsl.tests</module>
+		<module>org.eclipse.osbp.xtext.functionlibrarydsl.ui</module>
+		<module>org.eclipse.osbp.xtext.functionlibrarydsl.feature</module>
+	</modules>
+
+	<build>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-javadoc-plugin</artifactId>
+					<configuration>
+						<skip>true</skip>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.tycho</groupId>
+					<artifactId>target-platform-configuration</artifactId>
+					<version>${tycho-version}</version>
+					<configuration>
+						<resolver>p2</resolver>
+						<pomDependencies>consider</pomDependencies>
+						<environments>
+							<environment>
+								<os>win32</os>
+								<ws>win32</ws>
+								<arch>x86_64</arch>
+							</environment>
+							<environment>
+								<os>linux</os>
+								<ws>gtk</ws>
+								<arch>x86</arch>
+							</environment>
+							<environment>
+								<os>linux</os>
+								<ws>gtk</ws>
+								<arch>x86_64</arch>
+							</environment>
+							<environment>
+								<os>macosx</os>
+								<ws>cocoa</ws>
+								<arch>x86_64</arch>
+							</environment>
+						</environments>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+</project>