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..accc215
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart.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..5747b73
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,35 @@
+<?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.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.osgi.hybrid.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils.ui</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.authorization</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.blip</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.cube</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart.common</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.functionlibrary</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.chart.feature/.project b/org.eclipse.osbp.xtext.chart.feature/.project
new file mode 100644
index 0000000..ed8c1e7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart.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.chart.feature/LICENSE.txt b/org.eclipse.osbp.xtext.chart.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.feature/build.properties b/org.eclipse.osbp.xtext.chart.feature/build.properties
new file mode 100644
index 0000000..b8920ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = license.html,  epl-v10.html,  feature.xml,\
+               feature.properties
diff --git a/org.eclipse.osbp.xtext.chart.feature/epl-v10.html b/org.eclipse.osbp.xtext.chart.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.feature/feature.properties b/org.eclipse.osbp.xtext.chart.feature/feature.properties
new file mode 100644
index 0000000..c6f297c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.feature/feature.properties
@@ -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:
+#     Cristiano Gavião - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName =OSBP DSL: Chart 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides the bundles for the OSBP ChartDSL.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.chart.feature/feature.xml b/org.eclipse.osbp.xtext.chart.feature/feature.xml
new file mode 100644
index 0000000..8663537
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.feature/feature.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.xtext.chart.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.chart"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.chart.tests"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.chart.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.chart.feature/license.html b/org.eclipse.osbp.xtext.chart.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.feature/pom.xml b/org.eclipse.osbp.xtext.chart.feature/pom.xml
new file mode 100644
index 0000000..5230d9a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.feature/pom.xml
@@ -0,0 +1,89 @@
+<?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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.eclipse.osbp.xtext.chart</groupId>
+        <artifactId>org.eclipse.osbp.xtext.chart.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.xtext.chart.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>
+                        <plugin id="dcharts"/>
+                        <plugin id="com.vaadin.theme-compiler"/>
+                        <plugin id="com.vaadin.client-compiled"/>
+                        <plugin id="com.vaadin.server"/>
+                        <plugin id="com.vaadin.shared"/>
+                        <plugin id="com.vaadin.shared.deps"/>
+                        <plugin id="com.vaadin.themes"/>
+                    </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>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.osbp.xtext.chart</groupId>
+            <artifactId>org.eclipse.osbp.xtext.chart</artifactId>
+            <version>0.9.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.osbp.xtext.chart</groupId>
+            <artifactId>org.eclipse.osbp.xtext.chart.tests</artifactId>
+            <version>0.9.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.osbp.xtext.chart</groupId>
+            <artifactId>org.eclipse.osbp.xtext.chart.ui</artifactId>
+            <version>0.9.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.chart.sdk/.project b/org.eclipse.osbp.xtext.chart.sdk/.project
new file mode 100644
index 0000000..1399d85
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart.sdk</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.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.chart.sdk/LICENSE.txt b/org.eclipse.osbp.xtext.chart.sdk/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk/about.html b/org.eclipse.osbp.xtext.chart.sdk/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk/about.ini b/org.eclipse.osbp.xtext.chart.sdk/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk/about.mappings b/org.eclipse.osbp.xtext.chart.sdk/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk/about.properties b/org.eclipse.osbp.xtext.chart.sdk/about.properties
new file mode 100644
index 0000000..6b4170a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk
+
+################ 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.chart.sdk/build.properties b/org.eclipse.osbp.xtext.chart.sdk/build.properties
new file mode 100644
index 0000000..e252e4a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/build.properties
@@ -0,0 +1 @@
+bin.includes = license.html,  epl-v10.html,  about.properties,  about.mappings,  about.ini,  about.html, feature.xml
diff --git a/org.eclipse.osbp.xtext.chart.sdk/epl-v10.html b/org.eclipse.osbp.xtext.chart.sdk/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk/feature.xml b/org.eclipse.osbp.xtext.chart.sdk/feature.xml
new file mode 100644
index 0000000..7915c1a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/feature.xml
@@ -0,0 +1,46 @@
+<?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.chart.sdk"
+        label="ChartDSL
+        
+        
+        
+        
+        
+        
+        
+        
+        SDK
+        
+        
+        
+        
+        
+        
+        
+        
+        Feature
+        
+        
+        
+        
+        
+        
+        
+        
+        "
+        version="0.9.0.qualifier">
+        	<plugin id="org.eclipse.osbp.xtext.chart" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
+        	<plugin id="org.eclipse.osbp.xtext.chart.ui" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
+</feature>
diff --git a/org.eclipse.osbp.xtext.chart.sdk/license.html b/org.eclipse.osbp.xtext.chart.sdk/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk/pom.xml b/org.eclipse.osbp.xtext.chart.sdk/pom.xml
new file mode 100644
index 0000000..05bdbe7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/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.chart.sdk</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.xtext.chart</groupId>
+        <artifactId>org.eclipse.osbp.xtext.chart.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.xtext.chart.tests/.project b/org.eclipse.osbp.xtext.chart.tests/.project
new file mode 100644
index 0000000..19be46e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart.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.chart.tests/LICENSE.txt b/org.eclipse.osbp.xtext.chart.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..539aac3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.chart.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.chart.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: com.google.inject;bundle-version="3.0.0",
+ org.eclipse.osbp.xtext.chart;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.chart.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core,
+ javax.validation
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.chart;version="0.9.0"
diff --git a/org.eclipse.osbp.xtext.chart.tests/about.html b/org.eclipse.osbp.xtext.chart.tests/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/about.ini b/org.eclipse.osbp.xtext.chart.tests/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/about.mappings b/org.eclipse.osbp.xtext.chart.tests/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/about.properties b/org.eclipse.osbp.xtext.chart.tests/about.properties
new file mode 100644
index 0000000..fe3d08c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.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.chart.tests/build.properties b/org.eclipse.osbp.xtext.chart.tests/build.properties
new file mode 100644
index 0000000..5a6be71
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/build.properties
@@ -0,0 +1,13 @@
+source.. = src/,\
+           src-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html			   
diff --git a/org.eclipse.osbp.xtext.chart.tests/epl-v10.html b/org.eclipse.osbp.xtext.chart.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/license.html b/org.eclipse.osbp.xtext.chart.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/org.eclipse.osbp.xtext.chart.tests.launch b/org.eclipse.osbp.xtext.chart.tests/org.eclipse.osbp.xtext.chart.tests.launch
new file mode 100644
index 0000000..a47a10e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/org.eclipse.osbp.xtext.chart.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.chart.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.chart.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.chart.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.chart.tests/pom.xml b/org.eclipse.osbp.xtext.chart.tests/pom.xml
new file mode 100644
index 0000000..bd92673
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.xtext.chart.tests</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.xtext.chart</groupId>
+        <artifactId>org.eclipse.osbp.xtext.chart.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLInjectorProvider.java b/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLInjectorProvider.java
new file mode 100644
index 0000000..50f54ed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLInjectorProvider.java
@@ -0,0 +1,55 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart;
+
+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 ChartDSLInjectorProvider 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 ChartDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLUiInjectorProvider.java b/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLUiInjectorProvider.java
new file mode 100644
index 0000000..a5edfce
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLUiInjectorProvider.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.chart;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class ChartDSLUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.eclipse.osbp.xtext.chart.ui.internal.ChartDSLActivator.getInstance().getInjector("org.eclipse.osbp.xtext.chart.ChartDSL");
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/.project b/org.eclipse.osbp.xtext.chart.ui/.project
new file mode 100644
index 0000000..71c4e37
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart.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.chart.ui/LICENSE.txt b/org.eclipse.osbp.xtext.chart.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..af8b9b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,39 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.chart.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.chart.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.apache.xerces;bundle-version="2.9.0",
+ 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.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.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore,
+ org.eclipse.ui.editors,
+ org.eclipse.ui,
+ org.antlr.runtime,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.chart;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.validation,
+ org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.chart.ui;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.contentassist;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.contentassist.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.labeling;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.outline;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.ui.quickfix;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.chart.ui.internal.ChartDSLActivator
diff --git a/org.eclipse.osbp.xtext.chart.ui/about.html b/org.eclipse.osbp.xtext.chart.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/about.ini b/org.eclipse.osbp.xtext.chart.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/about.mappings b/org.eclipse.osbp.xtext.chart.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/about.properties b/org.eclipse.osbp.xtext.chart.ui/about.properties
new file mode 100644
index 0000000..4446e4f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.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.chart.ui/build.properties b/org.eclipse.osbp.xtext.chart.ui/build.properties
new file mode 100644
index 0000000..ed572cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/build.properties
@@ -0,0 +1,18 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               templates/,\
+               i18n/,\
+               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.chart.ui/epl-v10.html b/org.eclipse.osbp.xtext.chart.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/i18n/I18N.properties b/org.eclipse.osbp.xtext.chart.ui/i18n/I18N.properties
new file mode 100644
index 0000000..dceedec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/i18n/I18N.properties
@@ -0,0 +1,173 @@
+#
+#Wed Mar 15 15:21:48 CET 2017
+org.eclipse.osbp.xtext.chart.CCChart=
+org.eclipse.osbp.xtext.chart.CCChart.as=
+org.eclipse.osbp.xtext.chart.CCChart.chart=
+org.eclipse.osbp.xtext.chart.CCChart.described\ by=
+org.eclipse.osbp.xtext.chart.CCChart.polling=
+org.eclipse.osbp.xtext.chart.CCChart.using=
+org.eclipse.osbp.xtext.chart.CCChartAxis=
+org.eclipse.osbp.xtext.chart.CCChartAxis.axis=
+org.eclipse.osbp.xtext.chart.CCChartAxis.renders=
+org.eclipse.osbp.xtext.chart.CCChartAxis.shortLabel=
+org.eclipse.osbp.xtext.chart.CCChartAxis.tickangle=
+org.eclipse.osbp.xtext.chart.CCChartBar=
+org.eclipse.osbp.xtext.chart.CCChartBar.animated=
+org.eclipse.osbp.xtext.chart.CCChartBar.bar=
+org.eclipse.osbp.xtext.chart.CCChartBar.shaded=
+org.eclipse.osbp.xtext.chart.CCChartBar.stacked=
+org.eclipse.osbp.xtext.chart.CCChartBar.swapped=
+org.eclipse.osbp.xtext.chart.CCChartBubble=
+org.eclipse.osbp.xtext.chart.CCChartBubble.bubble=
+org.eclipse.osbp.xtext.chart.CCChartBubble.gradient=
+org.eclipse.osbp.xtext.chart.CCChartBubble.multiplier=
+org.eclipse.osbp.xtext.chart.CCChartBubble.transparent=
+org.eclipse.osbp.xtext.chart.CCChartDatamart=
+org.eclipse.osbp.xtext.chart.CCChartDatamart.datamart=
+org.eclipse.osbp.xtext.chart.CCChartDonut=
+org.eclipse.osbp.xtext.chart.CCChartDonut.donut=
+org.eclipse.osbp.xtext.chart.CCChartElement=
+org.eclipse.osbp.xtext.chart.CCChartGauge=
+org.eclipse.osbp.xtext.chart.CCChartGauge.gauge=
+org.eclipse.osbp.xtext.chart.CCChartGauge.hasTicks=
+org.eclipse.osbp.xtext.chart.CCChartGauge.intervals=
+org.eclipse.osbp.xtext.chart.CCChartGauge.label=
+org.eclipse.osbp.xtext.chart.CCChartGauge.maximum=
+org.eclipse.osbp.xtext.chart.CCChartGauge.minimum=
+org.eclipse.osbp.xtext.chart.CCChartHighlighter=
+org.eclipse.osbp.xtext.chart.CCChartHighlighter.always=
+org.eclipse.osbp.xtext.chart.CCChartHighlighter.inside=
+org.eclipse.osbp.xtext.chart.CCChartHighlighter.tooltip=
+org.eclipse.osbp.xtext.chart.CCChartImport=
+org.eclipse.osbp.xtext.chart.CCChartImport.import=
+org.eclipse.osbp.xtext.chart.CCChartInterval=
+org.eclipse.osbp.xtext.chart.CCChartLegend=
+org.eclipse.osbp.xtext.chart.CCChartLegend.legend=
+org.eclipse.osbp.xtext.chart.CCChartLegend.replot=
+org.eclipse.osbp.xtext.chart.CCChartLegend.toggle=
+org.eclipse.osbp.xtext.chart.CCChartLine=
+org.eclipse.osbp.xtext.chart.CCChartLine.animated=
+org.eclipse.osbp.xtext.chart.CCChartLine.cursor=
+org.eclipse.osbp.xtext.chart.CCChartLine.fillZero=
+org.eclipse.osbp.xtext.chart.CCChartLine.filled=
+org.eclipse.osbp.xtext.chart.CCChartLine.line=
+org.eclipse.osbp.xtext.chart.CCChartLine.showMarker=
+org.eclipse.osbp.xtext.chart.CCChartLine.tooltip=
+org.eclipse.osbp.xtext.chart.CCChartLine.trendLine=
+org.eclipse.osbp.xtext.chart.CCChartLine.zoom=
+org.eclipse.osbp.xtext.chart.CCChartModel=
+org.eclipse.osbp.xtext.chart.CCChartNumberInterval=
+org.eclipse.osbp.xtext.chart.CCChartNumberInterval.up\ to=
+org.eclipse.osbp.xtext.chart.CCChartOption=
+org.eclipse.osbp.xtext.chart.CCChartPackage=
+org.eclipse.osbp.xtext.chart.CCChartPackage.package=
+org.eclipse.osbp.xtext.chart.CCChartPie=
+org.eclipse.osbp.xtext.chart.CCChartPie.empty=
+org.eclipse.osbp.xtext.chart.CCChartPie.pie=
+org.eclipse.osbp.xtext.chart.CCChartQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.chart.CCChartRangeElement=
+org.eclipse.osbp.xtext.chart.CCChartSegmentColor=
+org.eclipse.osbp.xtext.chart.CCChartSegmentColor.segmentcolor=
+org.eclipse.osbp.xtext.chart.CCChartTree=
+org.eclipse.osbp.xtext.chart.CCChartTree.collapsible=
+org.eclipse.osbp.xtext.chart.CCChartTree.map=
+org.eclipse.osbp.xtext.chart.CCChartTree.tree=
+org.eclipse.osbp.xtext.chart.Chart=
+org.eclipse.osbp.xtext.chart.Chart.as=
+org.eclipse.osbp.xtext.chart.Chart.chart=
+org.eclipse.osbp.xtext.chart.Chart.described\ by=
+org.eclipse.osbp.xtext.chart.Chart.polling=
+org.eclipse.osbp.xtext.chart.Chart.using=
+org.eclipse.osbp.xtext.chart.ChartAxis=
+org.eclipse.osbp.xtext.chart.ChartAxis.axis=
+org.eclipse.osbp.xtext.chart.ChartAxis.renders=
+org.eclipse.osbp.xtext.chart.ChartAxis.shortLabel=
+org.eclipse.osbp.xtext.chart.ChartAxis.tickangle=
+org.eclipse.osbp.xtext.chart.ChartBar=
+org.eclipse.osbp.xtext.chart.ChartBar.animated=
+org.eclipse.osbp.xtext.chart.ChartBar.bar=
+org.eclipse.osbp.xtext.chart.ChartBar.shaded=
+org.eclipse.osbp.xtext.chart.ChartBar.stacked=
+org.eclipse.osbp.xtext.chart.ChartBar.swapped=
+org.eclipse.osbp.xtext.chart.ChartBubble=
+org.eclipse.osbp.xtext.chart.ChartBubble.bubble=
+org.eclipse.osbp.xtext.chart.ChartBubble.gradient=
+org.eclipse.osbp.xtext.chart.ChartBubble.multiplier=
+org.eclipse.osbp.xtext.chart.ChartBubble.transparent=
+org.eclipse.osbp.xtext.chart.ChartDatamart=
+org.eclipse.osbp.xtext.chart.ChartDatamart.datamart=
+org.eclipse.osbp.xtext.chart.ChartDonut=
+org.eclipse.osbp.xtext.chart.ChartDonut.donut=
+org.eclipse.osbp.xtext.chart.ChartElement=
+org.eclipse.osbp.xtext.chart.ChartGauge=
+org.eclipse.osbp.xtext.chart.ChartGauge.gauge=
+org.eclipse.osbp.xtext.chart.ChartGauge.hasTicks=
+org.eclipse.osbp.xtext.chart.ChartGauge.intervals=
+org.eclipse.osbp.xtext.chart.ChartGauge.label=
+org.eclipse.osbp.xtext.chart.ChartGauge.maximum=
+org.eclipse.osbp.xtext.chart.ChartGauge.minimum=
+org.eclipse.osbp.xtext.chart.ChartHighlighter=
+org.eclipse.osbp.xtext.chart.ChartHighlighter.always=
+org.eclipse.osbp.xtext.chart.ChartHighlighter.inside=
+org.eclipse.osbp.xtext.chart.ChartHighlighter.tooltip=
+org.eclipse.osbp.xtext.chart.ChartImport=
+org.eclipse.osbp.xtext.chart.ChartImport.import=
+org.eclipse.osbp.xtext.chart.ChartInterval=
+org.eclipse.osbp.xtext.chart.ChartLegend=
+org.eclipse.osbp.xtext.chart.ChartLegend.legend=
+org.eclipse.osbp.xtext.chart.ChartLegend.replot=
+org.eclipse.osbp.xtext.chart.ChartLegend.toggle=
+org.eclipse.osbp.xtext.chart.ChartLine=
+org.eclipse.osbp.xtext.chart.ChartLine.animated=
+org.eclipse.osbp.xtext.chart.ChartLine.cursor=
+org.eclipse.osbp.xtext.chart.ChartLine.fillZero=
+org.eclipse.osbp.xtext.chart.ChartLine.filled=
+org.eclipse.osbp.xtext.chart.ChartLine.line=
+org.eclipse.osbp.xtext.chart.ChartLine.showMarker=
+org.eclipse.osbp.xtext.chart.ChartLine.tooltip=
+org.eclipse.osbp.xtext.chart.ChartLine.trendLine=
+org.eclipse.osbp.xtext.chart.ChartLine.zoom=
+org.eclipse.osbp.xtext.chart.ChartModel=
+org.eclipse.osbp.xtext.chart.ChartNumberInterval=
+org.eclipse.osbp.xtext.chart.ChartNumberInterval.up\ to=
+org.eclipse.osbp.xtext.chart.ChartOption=
+org.eclipse.osbp.xtext.chart.ChartPackage=
+org.eclipse.osbp.xtext.chart.ChartPackage.package=
+org.eclipse.osbp.xtext.chart.ChartPie=
+org.eclipse.osbp.xtext.chart.ChartPie.empty=
+org.eclipse.osbp.xtext.chart.ChartPie.pie=
+org.eclipse.osbp.xtext.chart.ChartQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.chart.ChartRangeElement=
+org.eclipse.osbp.xtext.chart.ChartSegmentColor=
+org.eclipse.osbp.xtext.chart.ChartSegmentColor.segmentcolor=
+org.eclipse.osbp.xtext.chart.ChartTree=
+org.eclipse.osbp.xtext.chart.ChartTree.collapsible=
+org.eclipse.osbp.xtext.chart.ChartTree.map=
+org.eclipse.osbp.xtext.chart.ChartTree.tree=
+org.eclipse.osbp.xtext.chart.LegendPlacementEnum=
+org.eclipse.osbp.xtext.chart.LegendPlacementEnum.inside=
+org.eclipse.osbp.xtext.chart.LegendPlacementEnum.inside-grid=
+org.eclipse.osbp.xtext.chart.LegendPlacementEnum.outside=
+org.eclipse.osbp.xtext.chart.LegendPlacementEnum.outside-grid=
+org.eclipse.osbp.xtext.chart.RenderTypeEnum=
+org.eclipse.osbp.xtext.chart.RenderTypeEnum.category=
+org.eclipse.osbp.xtext.chart.RenderTypeEnum.date=
+org.eclipse.osbp.xtext.chart.RenderTypeEnum.linear=
+org.eclipse.osbp.xtext.chart.RenderTypeEnum.logarithmic=
+org.eclipse.osbp.xtext.chart.RenderTypeEnum.pyramid=
+org.eclipse.osbp.xtext.chart.SignedNumber=
+org.eclipse.osbp.xtext.chart.TRANSLATABLEID=
+org.eclipse.osbp.xtext.chart.TRANSLATABLESTRING=
+org.eclipse.osbp.xtext.chart.ToggleTypeEnum=
+org.eclipse.osbp.xtext.chart.ToggleTypeEnum.fast=
+org.eclipse.osbp.xtext.chart.ToggleTypeEnum.normal=
+org.eclipse.osbp.xtext.chart.ToggleTypeEnum.slow=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.east=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.north=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.north-east=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.north-west=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.south=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.south-east=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.south-west=
+org.eclipse.osbp.xtext.chart.TooltipLocationEnum.west=
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/chart_axis.png b/org.eclipse.osbp.xtext.chart.ui/icons/chart_axis.png
new file mode 100644
index 0000000..856a725
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/chart_axis.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/chart_interval.png b/org.eclipse.osbp.xtext.chart.ui/icons/chart_interval.png
new file mode 100644
index 0000000..4431429
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/chart_interval.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/chart_legend.png b/org.eclipse.osbp.xtext.chart.ui/icons/chart_legend.png
new file mode 100644
index 0000000..7668a15
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/chart_legend.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/chart_tooltip.png b/org.eclipse.osbp.xtext.chart.ui/icons/chart_tooltip.png
new file mode 100644
index 0000000..523a9f4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/chart_tooltip.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/dsl_chart.png b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_chart.png
new file mode 100644
index 0000000..3269d86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_chart.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/dsl_datamart.png b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_datamart.png
new file mode 100644
index 0000000..2f20aee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_datamart.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/dsl_import.png b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_import.png
new file mode 100644
index 0000000..f4fdcc9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_import.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/dsl_option.png b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_option.png
new file mode 100644
index 0000000..92087b8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_option.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/dsl_range.png b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_range.png
new file mode 100644
index 0000000..ff442d5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/dsl_range.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/model.png b/org.eclipse.osbp.xtext.chart.ui/icons/model.png
new file mode 100644
index 0000000..cffb857
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/model.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/package.gif b/org.eclipse.osbp.xtext.chart.ui/icons/package.gif
new file mode 100644
index 0000000..34506fb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/package.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart.ui/license.html b/org.eclipse.osbp.xtext.chart.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/plugin.xml b/org.eclipse.osbp.xtext.chart.ui/plugin.xml
new file mode 100644
index 0000000..9459709
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="chart"
+              icon="icons/dsl_chart.png"
+              id="org.eclipse.osbp.xtext.chart.ChartDSL"
+              matchingStrategy="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+              name="OSBP ChartDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.chart.ChartDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.chart.ChartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.chart.ChartDSL.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.chart.ChartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL"
+            icon="icons/dsl_chart.png"
+            name="OSBP ChartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.coloring"
+            icon="icons/dsl_chart.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.templates"
+            icon="icons/dsl_chart.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              icon="icons/dsl_chart.png"
+              id="org.eclipse.osbp.xtext.chart.ChartDSL"
+              name="OSBP ChartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+            <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.chart.ui.keyword_ChartDSL"
+            label="OSBP ChartDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="chart">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="chart">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.chart.ChartDSL -->
+	<extension
+	        id="chart.check.fast"
+	        name="OSBP ChartDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="chart.check.normal"
+	        name="OSBP ChartDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="chart.check.expensive"
+	        name="OSBP ChartDSL 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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.preferencePage"
+            icon="icons/dsl_chart.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              category="org.eclipse.osbp.xtext.chart.ChartDSL"
+              class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+              id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.propertyPage"
+              icon="icons/dsl_chart.png"
+              name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+            <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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.chart.ChartDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.chart.ui.chart.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.chart.ui.chart.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.chart.ui.chart.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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.chart.ChartDSL"
+	        class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.chart.ChartDSL.refactoring"
+            icon="icons/dsl_chart.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL" 
+                          id="org.eclipse.osbp.xtext.chart.ChartDSL.ide.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.chart.ChartDSL.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="example.rulerContextMenuId"
+         id="org.eclipse.osbp.xtext.chart.ChartDSL.ide.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="additions"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.ide.rulerContextMenu.toggleBreakpointAction">
+         </action>
+      </viewerContribution>
+   </extension>
+   
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="chart">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="chart" label="ChartDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.chart.ChartDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="chart">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.chart.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.chart.ui/plugin.xml_gen
new file mode 100644
index 0000000..72ead83
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/plugin.xml_gen
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="chart"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL"
+            matchingStrategy="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="ChartDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.chart.ChartDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.chart.ChartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.chart.ChartDSL.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.chart.ChartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL"
+            name="ChartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL"
+            name="ChartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+            <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.chart.ui.keyword_ChartDSL"
+            label="ChartDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="chart">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="chart">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.chart.ChartDSL -->
+	<extension
+	        id="chartdsl.check.fast"
+	        name="ChartDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="chartdsl.check.normal"
+	        name="ChartDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="chartdsl.check.expensive"
+	        name="ChartDSL 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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="chart"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.xtext.chart.ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+            <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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.chart.ChartDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.chart.ChartDSL"
+	        class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.chart.ChartDSL.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL" 
+                          id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.chart.ChartDSL.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="org.eclipse.osbp.xtext.chart.ChartDSL.RulerContext"
+         id="org.eclipse.osbp.xtext.chart.ChartDSL.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.toggleBreakpointAction">
+         </action>
+         <action
+            label="Not used"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.enableDisableBreakpointAction">
+         </action>
+         <action
+           label="Breakpoint Properties"
+           helpContextId="breakpoint_properties_action_context"
+           class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+           menubarPath="group.properties"
+           id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.openBreapointPropertiesAction">
+         </action>
+      </viewerContribution>
+   </extension>
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+   <!-- Open implementation -->
+   <extension point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+            commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+            <activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+              </reference>
+		</visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="chart">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="chart" label="ChartDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.chart.ChartDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="chart">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.chart.ui/pom.xml b/org.eclipse.osbp.xtext.chart.ui/pom.xml
new file mode 100644
index 0000000..d68fb3b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.xtext.chart.ui</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.xtext.chart</groupId>
+        <artifactId>org.eclipse.osbp.xtext.chart.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java
new file mode 100644
index 0000000..65def2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java
@@ -0,0 +1,374 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.chart.ui.ChartDSLUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractChartDSLUiModule extends DefaultUiModule {
+	
+	public AbstractChartDSLUiModule(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.chart.parser.antlr.internal.InternalChartDSLLexer.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.chart.ui.labeling.ChartDSLLabelProvider.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.chart.ui.labeling.ChartDSLDescriptionLabelProvider.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.chart.ui.outline.ChartDSLOutlineTreeProvider.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.chart.ui.outline.ChartDSLOutlineTreeProvider.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.chart.ui.quickfix.ChartDSLQuickfixProvider.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.chart.ui.contentassist.ChartDSLProposalProvider.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.chart.ui.contentassist.antlr.ChartDSLParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLLexer.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.chart.ui.contentassist.antlr.internal.InternalChartDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JdtRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider> bindIRenameStrategy$Provider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureJvmMemberRenameStrategy$Provider$Delegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider.class).annotatedWith(org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.Delegate.class).to(org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategyProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper> bindAbstractAntlrTokenToAttributeIdMapper() {
+		return org.eclipse.xtext.xbase.ui.syntaxcoloring.XbaseTokenToAttributeIdMapper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+		return org.eclipse.xtext.xbase.ui.contentassist.XbaseReferenceProposalCreator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.jface.text.contentassist.IContentAssistProcessor> bindIContentAssistProcessor() {
+		return org.eclipse.xtext.ui.editor.contentassist.RepeatedContentAssistProcessor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
+		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration> bindIHighlightingConfiguration() {
+		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingConfiguration.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider> bindIEObjectHoverProvider() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHover> bindIEObjectHover() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseDispatchingEObjectTextHover.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider.CrossRefResolutionConverter> bindDefaultQuickfixProvider$CrossRefResolutionConverter() {
+		return org.eclipse.xtext.xbase.ui.quickfix.XbaseCrossRefResolutionConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator> bindXbaseUIValidator() {
+		return org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
+		return org.eclipse.xtext.xbase.ui.navigation.TypeLiteralAwareHyperlinkHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.IFeatureScopeTracker.Provider> bindIFeatureScopeTracker$Provider() {
+		return org.eclipse.xtext.xbase.typesystem.internal.OptimizingFeatureScopeTrackerProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler> bindFindReferencesHandler() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelFindReferenceHandler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.ReferenceQueryExecutor> bindReferenceQueryExecutor() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelReferenceQueryExecutor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.xbase.ui.refactoring.XbaseReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameContextFactory> bindIRenameContextFactory() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.refactoring.participant.JdtRenameParticipant.ContextFactory> bindJdtRenameParticipant$ContextFactory() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelJdtRenameParticipantContext.ContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.DefaultJvmModelRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.OutlineNodeElementOpener> bindOutlineNodeElementOpener() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.outline.JvmOutlineNodeElementOpener.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.GlobalURIEditorOpener> bindGlobalURIEditorOpener() {
+		return org.eclipse.xtext.common.types.ui.navigation.GlobalDerivedMemberAwareURIEditorOpener.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.occurrences.IOccurrenceComputer> bindIOccurrenceComputer() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.occurrence.JvmModelOccurrenceComputer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
+		return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.No.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureLanguageSpecificURIEditorOpener(com.google.inject.Binder binder) {
+		if (org.eclipse.ui.PlatformUI.isWorkbenchRunning()) { 
+			binder.bind(org.eclipse.xtext.ui.editor.IURIEditorOpener.class).annotatedWith(org.eclipse.xtext.ui.LanguageSpecific.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
+			binder.bind(org.eclipse.xtext.common.types.ui.navigation.IDerivedMemberAwareEditorOpener.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
+		};
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.jface.text.hyperlink.IHyperlinkDetector> bindIHyperlinkDetector() {
+		return org.eclipse.xtext.xbase.ui.navigation.XbaseHyperlinkDetector.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes> bindJavaTypeQuickfixes() {
+		return org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixesNoImportSection.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.PartialChartDSLContentAssistParser.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java
new file mode 100644
index 0000000..1b14f2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java
@@ -0,0 +1,39 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.xtext.chart.ui.internal.ChartDSLActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class ChartDSLExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return ChartDSLActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return ChartDSLActivator.getInstance().getInjector(ChartDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java
new file mode 100644
index 0000000..e8b9bce
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java
@@ -0,0 +1,279 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.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 AbstractChartDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
+		
+	public void completeChartModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartPackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartPackage_Charts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChart_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChart_Description(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChart_DescriptionValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChart_Charttype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChart_Polling(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChart_PollingTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChart_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartBar_Shadow(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartBar_Animated(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartBar_Swapped(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartBar_Stacked(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_Animated(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_ShowMarker(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_TrendLine(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_Cursor(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_Zoom(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_Tooltip(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_FillToZero(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLine_FillArea(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartPie_Empty(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartBubble_Multiplier(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartBubble_MultiplierValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartBubble_Gradient(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartBubble_Transparent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartGauge_Labeled(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartGauge_LabelValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartGauge_HasTicks(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartGauge_MinValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartGauge_MaxValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartGauge_HasIntervals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartGauge_Intervals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartTree_Map(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartTree_Collapsible(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartNumberInterval_NumberIntervalValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartNumberInterval_NumberRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartDatamart_DatamartRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartDatamart_Elements(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartLegend_Placement(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartLegend_Toggle(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLegend_Replot(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartLegend_ToggleType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartHighlighter_Location(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartHighlighter_TooltipAlways(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartHighlighter_InsideChart(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartAxis_Axis(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartAxis_RenderType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartAxis_ShortLabel(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeChartAxis_Angle(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartSegmentColor_Rgb(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeChartImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_ChartModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Chart(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartOption(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartBar(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartLine(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartPie(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartDonut(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartBubble(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartGauge(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartTree(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartInterval(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartNumberInterval(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartDatamart(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartElement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartLegend(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartHighlighter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartAxis(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartRangeElement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartSegmentColor(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartImport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ChartQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LegendPlacementEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ToggleTypeEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TooltipLocationEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RenderTypeEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/ChartDSLParser.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/ChartDSLParser.java
new file mode 100644
index 0000000..a4e4b21
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/ChartDSLParser.java
@@ -0,0 +1,573 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.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.chart.services.ChartDSLGrammarAccess;
+
+public class ChartDSLParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private ChartDSLGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLParser createParser() {
+		org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLParser result = new org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLParser(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.getChartOptionAccess().getAlternatives(), "rule__ChartOption__Alternatives");
+					put(grammarAccess.getChartBubbleAccess().getAlternatives_2_1(), "rule__ChartBubble__Alternatives_2_1");
+					put(grammarAccess.getChartTreeAccess().getAlternatives_2(), "rule__ChartTree__Alternatives_2");
+					put(grammarAccess.getChartElementAccess().getAlternatives(), "rule__ChartElement__Alternatives");
+					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.getLegendPlacementEnumAccess().getAlternatives(), "rule__LegendPlacementEnum__Alternatives");
+					put(grammarAccess.getToggleTypeEnumAccess().getAlternatives(), "rule__ToggleTypeEnum__Alternatives");
+					put(grammarAccess.getTooltipLocationEnumAccess().getAlternatives(), "rule__TooltipLocationEnum__Alternatives");
+					put(grammarAccess.getRenderTypeEnumAccess().getAlternatives(), "rule__RenderTypeEnum__Alternatives");
+					put(grammarAccess.getChartPackageAccess().getGroup(), "rule__ChartPackage__Group__0");
+					put(grammarAccess.getChartPackageAccess().getGroup_3(), "rule__ChartPackage__Group_3__0");
+					put(grammarAccess.getChartAccess().getGroup(), "rule__Chart__Group__0");
+					put(grammarAccess.getChartAccess().getGroup_3(), "rule__Chart__Group_3__0");
+					put(grammarAccess.getChartAccess().getGroup_6(), "rule__Chart__Group_6__0");
+					put(grammarAccess.getChartAccess().getGroup_7(), "rule__Chart__Group_7__0");
+					put(grammarAccess.getChartBarAccess().getGroup(), "rule__ChartBar__Group__0");
+					put(grammarAccess.getChartLineAccess().getGroup(), "rule__ChartLine__Group__0");
+					put(grammarAccess.getChartLineAccess().getGroup_2_3(), "rule__ChartLine__Group_2_3__0");
+					put(grammarAccess.getChartPieAccess().getGroup(), "rule__ChartPie__Group__0");
+					put(grammarAccess.getChartDonutAccess().getGroup(), "rule__ChartDonut__Group__0");
+					put(grammarAccess.getChartBubbleAccess().getGroup(), "rule__ChartBubble__Group__0");
+					put(grammarAccess.getChartBubbleAccess().getGroup_2_0(), "rule__ChartBubble__Group_2_0__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup(), "rule__ChartGauge__Group__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup_2_0(), "rule__ChartGauge__Group_2_0__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup_2_1(), "rule__ChartGauge__Group_2_1__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup_2_2(), "rule__ChartGauge__Group_2_2__0");
+					put(grammarAccess.getChartTreeAccess().getGroup(), "rule__ChartTree__Group__0");
+					put(grammarAccess.getChartNumberIntervalAccess().getGroup(), "rule__ChartNumberInterval__Group__0");
+					put(grammarAccess.getChartDatamartAccess().getGroup(), "rule__ChartDatamart__Group__0");
+					put(grammarAccess.getChartLegendAccess().getGroup(), "rule__ChartLegend__Group__0");
+					put(grammarAccess.getChartLegendAccess().getGroup_2(), "rule__ChartLegend__Group_2__0");
+					put(grammarAccess.getChartHighlighterAccess().getGroup(), "rule__ChartHighlighter__Group__0");
+					put(grammarAccess.getChartHighlighterAccess().getGroup_2(), "rule__ChartHighlighter__Group_2__0");
+					put(grammarAccess.getChartAxisAccess().getGroup(), "rule__ChartAxis__Group__0");
+					put(grammarAccess.getChartAxisAccess().getGroup_5(), "rule__ChartAxis__Group_5__0");
+					put(grammarAccess.getChartSegmentColorAccess().getGroup(), "rule__ChartSegmentColor__Group__0");
+					put(grammarAccess.getChartImportAccess().getGroup(), "rule__ChartImport__Group__0");
+					put(grammarAccess.getSignedNumberAccess().getGroup(), "rule__SignedNumber__Group__0");
+					put(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup(), "rule__ChartQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup_1(), "rule__ChartQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1(), "rule__Number__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1_1(), "rule__Number__Group_1_1__0");
+					put(grammarAccess.getStaticQualifierAccess().getGroup(), "rule__StaticQualifier__Group__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0(), "rule__JvmTypeReference__Group_0__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1(), "rule__JvmTypeReference__Group_0_1__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0(), "rule__JvmTypeReference__Group_0_1_0__0");
+					put(grammarAccess.getArrayBracketsAccess().getGroup(), "rule__ArrayBrackets__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup(), "rule__XFunctionTypeRef__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0(), "rule__XFunctionTypeRef__Group_0__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1(), "rule__XFunctionTypeRef__Group_0_1__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1(), "rule__XFunctionTypeRef__Group_0_1_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup(), "rule__JvmParameterizedTypeReference__Group__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1(), "rule__JvmParameterizedTypeReference__Group_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2(), "rule__JvmParameterizedTypeReference__Group_1_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4(), "rule__JvmParameterizedTypeReference__Group_1_4__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup(), "rule__JvmWildcardTypeReference__Group__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0(), "rule__JvmWildcardTypeReference__Group_2_0__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1(), "rule__JvmWildcardTypeReference__Group_2_1__0");
+					put(grammarAccess.getJvmUpperBoundAccess().getGroup(), "rule__JvmUpperBound__Group__0");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getGroup(), "rule__JvmUpperBoundAnded__Group__0");
+					put(grammarAccess.getJvmLowerBoundAccess().getGroup(), "rule__JvmLowerBound__Group__0");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getGroup(), "rule__JvmLowerBoundAnded__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
+					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_1_0(), "rule__XImportDeclaration__Group_1_0__0");
+					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
+					put(grammarAccess.getChartModelAccess().getPackagesAssignment(), "rule__ChartModel__PackagesAssignment");
+					put(grammarAccess.getChartPackageAccess().getNameAssignment_2(), "rule__ChartPackage__NameAssignment_2");
+					put(grammarAccess.getChartPackageAccess().getImportsAssignment_3_1(), "rule__ChartPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getChartPackageAccess().getChartsAssignment_3_2(), "rule__ChartPackage__ChartsAssignment_3_2");
+					put(grammarAccess.getChartAccess().getNameAssignment_2(), "rule__Chart__NameAssignment_2");
+					put(grammarAccess.getChartAccess().getDescriptionAssignment_3_0(), "rule__Chart__DescriptionAssignment_3_0");
+					put(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1(), "rule__Chart__DescriptionValueAssignment_3_1");
+					put(grammarAccess.getChartAccess().getCharttypeAssignment_5(), "rule__Chart__CharttypeAssignment_5");
+					put(grammarAccess.getChartAccess().getPollingAssignment_6_0(), "rule__Chart__PollingAssignment_6_0");
+					put(grammarAccess.getChartAccess().getPollingTimeAssignment_6_1(), "rule__Chart__PollingTimeAssignment_6_1");
+					put(grammarAccess.getChartAccess().getSourceAssignment_7_1(), "rule__Chart__SourceAssignment_7_1");
+					put(grammarAccess.getChartBarAccess().getShadowAssignment_2_0(), "rule__ChartBar__ShadowAssignment_2_0");
+					put(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1(), "rule__ChartBar__AnimatedAssignment_2_1");
+					put(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2(), "rule__ChartBar__SwappedAssignment_2_2");
+					put(grammarAccess.getChartBarAccess().getStackedAssignment_2_3(), "rule__ChartBar__StackedAssignment_2_3");
+					put(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0(), "rule__ChartLine__AnimatedAssignment_2_0");
+					put(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1(), "rule__ChartLine__ShowMarkerAssignment_2_1");
+					put(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2(), "rule__ChartLine__TrendLineAssignment_2_2");
+					put(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0(), "rule__ChartLine__CursorAssignment_2_3_0");
+					put(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1(), "rule__ChartLine__ZoomAssignment_2_3_1");
+					put(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2(), "rule__ChartLine__TooltipAssignment_2_3_2");
+					put(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4(), "rule__ChartLine__FillToZeroAssignment_2_4");
+					put(grammarAccess.getChartLineAccess().getFillAreaAssignment_2_5(), "rule__ChartLine__FillAreaAssignment_2_5");
+					put(grammarAccess.getChartPieAccess().getEmptyAssignment_2(), "rule__ChartPie__EmptyAssignment_2");
+					put(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0(), "rule__ChartBubble__MultiplierAssignment_2_0_0");
+					put(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1(), "rule__ChartBubble__MultiplierValueAssignment_2_0_1");
+					put(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0(), "rule__ChartBubble__GradientAssignment_2_1_0");
+					put(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1(), "rule__ChartBubble__TransparentAssignment_2_1_1");
+					put(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0(), "rule__ChartGauge__LabeledAssignment_2_0_0");
+					put(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1(), "rule__ChartGauge__LabelValueAssignment_2_0_1");
+					put(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0(), "rule__ChartGauge__HasTicksAssignment_2_1_0");
+					put(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2(), "rule__ChartGauge__MinValueAssignment_2_1_2");
+					put(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4(), "rule__ChartGauge__MaxValueAssignment_2_1_4");
+					put(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0(), "rule__ChartGauge__HasIntervalsAssignment_2_2_0");
+					put(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2(), "rule__ChartGauge__IntervalsAssignment_2_2_2");
+					put(grammarAccess.getChartTreeAccess().getMapAssignment_2_0(), "rule__ChartTree__MapAssignment_2_0");
+					put(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1(), "rule__ChartTree__CollapsibleAssignment_2_1");
+					put(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2(), "rule__ChartNumberInterval__NumberIntervalValueAssignment_2");
+					put(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3(), "rule__ChartNumberInterval__NumberRangeAssignment_3");
+					put(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1(), "rule__ChartDatamart__DatamartRefAssignment_1");
+					put(grammarAccess.getChartDatamartAccess().getElementsAssignment_3(), "rule__ChartDatamart__ElementsAssignment_3");
+					put(grammarAccess.getChartLegendAccess().getPlacementAssignment_1(), "rule__ChartLegend__PlacementAssignment_1");
+					put(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0(), "rule__ChartLegend__ToggleAssignment_2_0");
+					put(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1(), "rule__ChartLegend__ReplotAssignment_2_1");
+					put(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2(), "rule__ChartLegend__ToggleTypeAssignment_2_2");
+					put(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1(), "rule__ChartHighlighter__LocationAssignment_1");
+					put(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0(), "rule__ChartHighlighter__TooltipAlwaysAssignment_2_0");
+					put(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1(), "rule__ChartHighlighter__InsideChartAssignment_2_1");
+					put(grammarAccess.getChartAxisAccess().getAxisAssignment_1(), "rule__ChartAxis__AxisAssignment_1");
+					put(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3(), "rule__ChartAxis__RenderTypeAssignment_3");
+					put(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4(), "rule__ChartAxis__ShortLabelAssignment_4");
+					put(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1(), "rule__ChartAxis__AngleAssignment_5_1");
+					put(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1(), "rule__ChartSegmentColor__RgbAssignment_1");
+					put(grammarAccess.getChartImportAccess().getImportedNamespaceAssignment_1(), "rule__ChartImport__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+					put(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), "rule__ChartBar__UnorderedGroup_2");
+					put(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), "rule__ChartLine__UnorderedGroup_2");
+					put(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), "rule__ChartBubble__UnorderedGroup_2");
+					put(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), "rule__ChartGauge__UnorderedGroup_2");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLParser typedParser = (org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLParser) parser;
+			typedParser.entryRuleChartModel();
+			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 ChartDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/PartialChartDSLContentAssistParser.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/PartialChartDSLContentAssistParser.java
new file mode 100644
index 0000000..522073f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/PartialChartDSLContentAssistParser.java
@@ -0,0 +1,48 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.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 PartialChartDSLContentAssistParser extends ChartDSLParser 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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g
new file mode 100644
index 0000000..4e3a8bb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+grammar InternalChartDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.chart.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.chart.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.chart.services.ChartDSLGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private ChartDSLGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleChartModel
+entryRuleChartModel 
+:
+{ before(grammarAccess.getChartModelRule()); }
+	 ruleChartModel
+{ after(grammarAccess.getChartModelRule()); } 
+	 EOF 
+;
+
+// Rule ChartModel
+ruleChartModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartModelAccess().getPackagesAssignment()); }
+(rule__ChartModel__PackagesAssignment)*
+{ after(grammarAccess.getChartModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartPackage
+entryRuleChartPackage 
+:
+{ before(grammarAccess.getChartPackageRule()); }
+	 ruleChartPackage
+{ after(grammarAccess.getChartPackageRule()); } 
+	 EOF 
+;
+
+// Rule ChartPackage
+ruleChartPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartPackageAccess().getGroup()); }
+(rule__ChartPackage__Group__0)
+{ after(grammarAccess.getChartPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChart
+entryRuleChart 
+:
+{ before(grammarAccess.getChartRule()); }
+	 ruleChart
+{ after(grammarAccess.getChartRule()); } 
+	 EOF 
+;
+
+// Rule Chart
+ruleChart
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartAccess().getGroup()); }
+(rule__Chart__Group__0)
+{ after(grammarAccess.getChartAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartOption
+entryRuleChartOption 
+:
+{ before(grammarAccess.getChartOptionRule()); }
+	 ruleChartOption
+{ after(grammarAccess.getChartOptionRule()); } 
+	 EOF 
+;
+
+// Rule ChartOption
+ruleChartOption
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartOptionAccess().getAlternatives()); }
+(rule__ChartOption__Alternatives)
+{ after(grammarAccess.getChartOptionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartBar
+entryRuleChartBar 
+:
+{ before(grammarAccess.getChartBarRule()); }
+	 ruleChartBar
+{ after(grammarAccess.getChartBarRule()); } 
+	 EOF 
+;
+
+// Rule ChartBar
+ruleChartBar
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartBarAccess().getGroup()); }
+(rule__ChartBar__Group__0)
+{ after(grammarAccess.getChartBarAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartLine
+entryRuleChartLine 
+:
+{ before(grammarAccess.getChartLineRule()); }
+	 ruleChartLine
+{ after(grammarAccess.getChartLineRule()); } 
+	 EOF 
+;
+
+// Rule ChartLine
+ruleChartLine
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartLineAccess().getGroup()); }
+(rule__ChartLine__Group__0)
+{ after(grammarAccess.getChartLineAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartPie
+entryRuleChartPie 
+:
+{ before(grammarAccess.getChartPieRule()); }
+	 ruleChartPie
+{ after(grammarAccess.getChartPieRule()); } 
+	 EOF 
+;
+
+// Rule ChartPie
+ruleChartPie
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartPieAccess().getGroup()); }
+(rule__ChartPie__Group__0)
+{ after(grammarAccess.getChartPieAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartDonut
+entryRuleChartDonut 
+:
+{ before(grammarAccess.getChartDonutRule()); }
+	 ruleChartDonut
+{ after(grammarAccess.getChartDonutRule()); } 
+	 EOF 
+;
+
+// Rule ChartDonut
+ruleChartDonut
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartDonutAccess().getGroup()); }
+(rule__ChartDonut__Group__0)
+{ after(grammarAccess.getChartDonutAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartBubble
+entryRuleChartBubble 
+:
+{ before(grammarAccess.getChartBubbleRule()); }
+	 ruleChartBubble
+{ after(grammarAccess.getChartBubbleRule()); } 
+	 EOF 
+;
+
+// Rule ChartBubble
+ruleChartBubble
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartBubbleAccess().getGroup()); }
+(rule__ChartBubble__Group__0)
+{ after(grammarAccess.getChartBubbleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartGauge
+entryRuleChartGauge 
+:
+{ before(grammarAccess.getChartGaugeRule()); }
+	 ruleChartGauge
+{ after(grammarAccess.getChartGaugeRule()); } 
+	 EOF 
+;
+
+// Rule ChartGauge
+ruleChartGauge
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartGaugeAccess().getGroup()); }
+(rule__ChartGauge__Group__0)
+{ after(grammarAccess.getChartGaugeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartTree
+entryRuleChartTree 
+:
+{ before(grammarAccess.getChartTreeRule()); }
+	 ruleChartTree
+{ after(grammarAccess.getChartTreeRule()); } 
+	 EOF 
+;
+
+// Rule ChartTree
+ruleChartTree
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartTreeAccess().getGroup()); }
+(rule__ChartTree__Group__0)
+{ after(grammarAccess.getChartTreeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartInterval
+entryRuleChartInterval 
+:
+{ before(grammarAccess.getChartIntervalRule()); }
+	 ruleChartInterval
+{ after(grammarAccess.getChartIntervalRule()); } 
+	 EOF 
+;
+
+// Rule ChartInterval
+ruleChartInterval
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); }
+	ruleChartNumberInterval
+{ after(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartNumberInterval
+entryRuleChartNumberInterval 
+:
+{ before(grammarAccess.getChartNumberIntervalRule()); }
+	 ruleChartNumberInterval
+{ after(grammarAccess.getChartNumberIntervalRule()); } 
+	 EOF 
+;
+
+// Rule ChartNumberInterval
+ruleChartNumberInterval
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartNumberIntervalAccess().getGroup()); }
+(rule__ChartNumberInterval__Group__0)
+{ after(grammarAccess.getChartNumberIntervalAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartDatamart
+entryRuleChartDatamart 
+:
+{ before(grammarAccess.getChartDatamartRule()); }
+	 ruleChartDatamart
+{ after(grammarAccess.getChartDatamartRule()); } 
+	 EOF 
+;
+
+// Rule ChartDatamart
+ruleChartDatamart
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartDatamartAccess().getGroup()); }
+(rule__ChartDatamart__Group__0)
+{ after(grammarAccess.getChartDatamartAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartElement
+entryRuleChartElement 
+:
+{ before(grammarAccess.getChartElementRule()); }
+	 ruleChartElement
+{ after(grammarAccess.getChartElementRule()); } 
+	 EOF 
+;
+
+// Rule ChartElement
+ruleChartElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartElementAccess().getAlternatives()); }
+(rule__ChartElement__Alternatives)
+{ after(grammarAccess.getChartElementAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartLegend
+entryRuleChartLegend 
+:
+{ before(grammarAccess.getChartLegendRule()); }
+	 ruleChartLegend
+{ after(grammarAccess.getChartLegendRule()); } 
+	 EOF 
+;
+
+// Rule ChartLegend
+ruleChartLegend
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartLegendAccess().getGroup()); }
+(rule__ChartLegend__Group__0)
+{ after(grammarAccess.getChartLegendAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartHighlighter
+entryRuleChartHighlighter 
+:
+{ before(grammarAccess.getChartHighlighterRule()); }
+	 ruleChartHighlighter
+{ after(grammarAccess.getChartHighlighterRule()); } 
+	 EOF 
+;
+
+// Rule ChartHighlighter
+ruleChartHighlighter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartHighlighterAccess().getGroup()); }
+(rule__ChartHighlighter__Group__0)
+{ after(grammarAccess.getChartHighlighterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartAxis
+entryRuleChartAxis 
+:
+{ before(grammarAccess.getChartAxisRule()); }
+	 ruleChartAxis
+{ after(grammarAccess.getChartAxisRule()); } 
+	 EOF 
+;
+
+// Rule ChartAxis
+ruleChartAxis
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartAxisAccess().getGroup()); }
+(rule__ChartAxis__Group__0)
+{ after(grammarAccess.getChartAxisAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartRangeElement
+entryRuleChartRangeElement 
+:
+{ before(grammarAccess.getChartRangeElementRule()); }
+	 ruleChartRangeElement
+{ after(grammarAccess.getChartRangeElementRule()); } 
+	 EOF 
+;
+
+// Rule ChartRangeElement
+ruleChartRangeElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); }
+	ruleChartSegmentColor
+{ after(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartSegmentColor
+entryRuleChartSegmentColor 
+:
+{ before(grammarAccess.getChartSegmentColorRule()); }
+	 ruleChartSegmentColor
+{ after(grammarAccess.getChartSegmentColorRule()); } 
+	 EOF 
+;
+
+// Rule ChartSegmentColor
+ruleChartSegmentColor
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartSegmentColorAccess().getGroup()); }
+(rule__ChartSegmentColor__Group__0)
+{ after(grammarAccess.getChartSegmentColorAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartImport
+entryRuleChartImport 
+:
+{ before(grammarAccess.getChartImportRule()); }
+	 ruleChartImport
+{ after(grammarAccess.getChartImportRule()); } 
+	 EOF 
+;
+
+// Rule ChartImport
+ruleChartImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartImportAccess().getGroup()); }
+(rule__ChartImport__Group__0)
+{ after(grammarAccess.getChartImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSignedNumber
+entryRuleSignedNumber 
+:
+{ before(grammarAccess.getSignedNumberRule()); }
+	 ruleSignedNumber
+{ after(grammarAccess.getSignedNumberRule()); } 
+	 EOF 
+;
+
+// Rule SignedNumber
+ruleSignedNumber
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSignedNumberAccess().getGroup()); }
+(rule__SignedNumber__Group__0)?
+{ after(grammarAccess.getSignedNumberAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleChartQualifiedNameWithWildCard
+entryRuleChartQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getChartQualifiedNameWithWildCardRule()); }
+	 ruleChartQualifiedNameWithWildCard
+{ after(grammarAccess.getChartQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule ChartQualifiedNameWithWildCard
+ruleChartQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__ChartQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTRANSLATABLESTRING
+entryRuleTRANSLATABLESTRING 
+:
+{ before(grammarAccess.getTRANSLATABLESTRINGRule()); }
+	 ruleTRANSLATABLESTRING
+{ after(grammarAccess.getTRANSLATABLESTRINGRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLESTRING
+ruleTRANSLATABLESTRING
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+	RULE_STRING
+{ after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID 
+:
+{ before(grammarAccess.getTRANSLATABLEIDRule()); }
+	 ruleTRANSLATABLEID
+{ after(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation 
+:
+{ before(grammarAccess.getXAnnotationRule()); }
+	 ruleXAnnotation
+{ after(grammarAccess.getXAnnotationRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
+(rule__XAnnotation__Group__0)
+{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair 
+:
+{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 ruleXAnnotationElementValuePair
+{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+(rule__XAnnotationElementValuePair__Group__0)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList 
+:
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 ruleXAnnotationElementValueOrCommaList
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+(rule__XAnnotationElementValueOrCommaList__Alternatives)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue 
+:
+{ before(grammarAccess.getXAnnotationElementValueRule()); }
+	 ruleXAnnotationElementValue
+{ after(grammarAccess.getXAnnotationElementValueRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+(rule__XAnnotationElementValue__Alternatives)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression 
+:
+{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+(rule__XAnnotationOrExpression__Alternatives)
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression 
+:
+{ before(grammarAccess.getXExpressionRule()); }
+	 ruleXExpression
+{ after(grammarAccess.getXExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+	ruleXAssignment
+{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment 
+:
+{ before(grammarAccess.getXAssignmentRule()); }
+	 ruleXAssignment
+{ after(grammarAccess.getXAssignmentRule()); } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+(rule__XAssignment__Alternatives)
+{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign 
+:
+{ before(grammarAccess.getOpSingleAssignRule()); }
+	 ruleOpSingleAssign
+{ after(grammarAccess.getOpSingleAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+
+	'=' 
+
+{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign 
+:
+{ before(grammarAccess.getOpMultiAssignRule()); }
+	 ruleOpMultiAssign
+{ after(grammarAccess.getOpMultiAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+(rule__OpMultiAssign__Alternatives)
+{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression 
+:
+{ before(grammarAccess.getXOrExpressionRule()); }
+	 ruleXOrExpression
+{ after(grammarAccess.getXOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
+(rule__XOrExpression__Group__0)
+{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr 
+:
+{ before(grammarAccess.getOpOrRule()); }
+	 ruleOpOr
+{ after(grammarAccess.getOpOrRule()); } 
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+
+	'||' 
+
+{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression 
+:
+{ before(grammarAccess.getXAndExpressionRule()); }
+	 ruleXAndExpression
+{ after(grammarAccess.getXAndExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
+(rule__XAndExpression__Group__0)
+{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd 
+:
+{ before(grammarAccess.getOpAndRule()); }
+	 ruleOpAnd
+{ after(grammarAccess.getOpAndRule()); } 
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+
+	'&&' 
+
+{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression 
+:
+{ before(grammarAccess.getXEqualityExpressionRule()); }
+	 ruleXEqualityExpression
+{ after(grammarAccess.getXEqualityExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+(rule__XEqualityExpression__Group__0)
+{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality 
+:
+{ before(grammarAccess.getOpEqualityRule()); }
+	 ruleOpEquality
+{ after(grammarAccess.getOpEqualityRule()); } 
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+(rule__OpEquality__Alternatives)
+{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression 
+:
+{ before(grammarAccess.getXRelationalExpressionRule()); }
+	 ruleXRelationalExpression
+{ after(grammarAccess.getXRelationalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+(rule__XRelationalExpression__Group__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare 
+:
+{ before(grammarAccess.getOpCompareRule()); }
+	 ruleOpCompare
+{ after(grammarAccess.getOpCompareRule()); } 
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
+(rule__OpCompare__Alternatives)
+{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression 
+:
+{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 ruleXOtherOperatorExpression
+{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+(rule__XOtherOperatorExpression__Group__0)
+{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther 
+:
+{ before(grammarAccess.getOpOtherRule()); }
+	 ruleOpOther
+{ after(grammarAccess.getOpOtherRule()); } 
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
+(rule__OpOther__Alternatives)
+{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression 
+:
+{ before(grammarAccess.getXAdditiveExpressionRule()); }
+	 ruleXAdditiveExpression
+{ after(grammarAccess.getXAdditiveExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+(rule__XAdditiveExpression__Group__0)
+{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd 
+:
+{ before(grammarAccess.getOpAddRule()); }
+	 ruleOpAdd
+{ after(grammarAccess.getOpAddRule()); } 
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
+(rule__OpAdd__Alternatives)
+{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression 
+:
+{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 ruleXMultiplicativeExpression
+{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+(rule__XMultiplicativeExpression__Group__0)
+{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti 
+:
+{ before(grammarAccess.getOpMultiRule()); }
+	 ruleOpMulti
+{ after(grammarAccess.getOpMultiRule()); } 
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
+(rule__OpMulti__Alternatives)
+{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation 
+:
+{ before(grammarAccess.getXUnaryOperationRule()); }
+	 ruleXUnaryOperation
+{ after(grammarAccess.getXUnaryOperationRule()); } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+(rule__XUnaryOperation__Alternatives)
+{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary 
+:
+{ before(grammarAccess.getOpUnaryRule()); }
+	 ruleOpUnary
+{ after(grammarAccess.getOpUnaryRule()); } 
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+(rule__OpUnary__Alternatives)
+{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression 
+:
+{ before(grammarAccess.getXCastedExpressionRule()); }
+	 ruleXCastedExpression
+{ after(grammarAccess.getXCastedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+(rule__XCastedExpression__Group__0)
+{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation 
+:
+{ before(grammarAccess.getXPostfixOperationRule()); }
+	 ruleXPostfixOperation
+{ after(grammarAccess.getXPostfixOperationRule()); } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+(rule__XPostfixOperation__Group__0)
+{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix 
+:
+{ before(grammarAccess.getOpPostfixRule()); }
+	 ruleOpPostfix
+{ after(grammarAccess.getOpPostfixRule()); } 
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+(rule__OpPostfix__Alternatives)
+{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall 
+:
+{ before(grammarAccess.getXMemberFeatureCallRule()); }
+	 ruleXMemberFeatureCall
+{ after(grammarAccess.getXMemberFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+(rule__XMemberFeatureCall__Group__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression 
+:
+{ before(grammarAccess.getXPrimaryExpressionRule()); }
+	 ruleXPrimaryExpression
+{ after(grammarAccess.getXPrimaryExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+(rule__XPrimaryExpression__Alternatives)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral 
+:
+{ before(grammarAccess.getXLiteralRule()); }
+	 ruleXLiteral
+{ after(grammarAccess.getXLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
+(rule__XLiteral__Alternatives)
+{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral 
+:
+{ before(grammarAccess.getXCollectionLiteralRule()); }
+	 ruleXCollectionLiteral
+{ after(grammarAccess.getXCollectionLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+(rule__XCollectionLiteral__Alternatives)
+{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral 
+:
+{ before(grammarAccess.getXSetLiteralRule()); }
+	 ruleXSetLiteral
+{ after(grammarAccess.getXSetLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
+(rule__XSetLiteral__Group__0)
+{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral 
+:
+{ before(grammarAccess.getXListLiteralRule()); }
+	 ruleXListLiteral
+{ after(grammarAccess.getXListLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
+(rule__XListLiteral__Group__0)
+{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure 
+:
+{ before(grammarAccess.getXClosureRule()); }
+	 ruleXClosure
+{ after(grammarAccess.getXClosureRule()); } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXClosureAccess().getGroup()); }
+(rule__XClosure__Group__0)
+{ after(grammarAccess.getXClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure 
+:
+{ before(grammarAccess.getXExpressionInClosureRule()); }
+	 ruleXExpressionInClosure
+{ after(grammarAccess.getXExpressionInClosureRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+(rule__XExpressionInClosure__Group__0)
+{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure 
+:
+{ before(grammarAccess.getXShortClosureRule()); }
+	 ruleXShortClosure
+{ after(grammarAccess.getXShortClosureRule()); } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
+(rule__XShortClosure__Group__0)
+{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression 
+:
+{ before(grammarAccess.getXParenthesizedExpressionRule()); }
+	 ruleXParenthesizedExpression
+{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+(rule__XParenthesizedExpression__Group__0)
+{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression 
+:
+{ before(grammarAccess.getXIfExpressionRule()); }
+	 ruleXIfExpression
+{ after(grammarAccess.getXIfExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
+(rule__XIfExpression__Group__0)
+{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression 
+:
+{ before(grammarAccess.getXSwitchExpressionRule()); }
+	 ruleXSwitchExpression
+{ after(grammarAccess.getXSwitchExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+(rule__XSwitchExpression__Group__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart 
+:
+{ before(grammarAccess.getXCasePartRule()); }
+	 ruleXCasePart
+{ after(grammarAccess.getXCasePartRule()); } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCasePartAccess().getGroup()); }
+(rule__XCasePart__Group__0)
+{ after(grammarAccess.getXCasePartAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression 
+:
+{ before(grammarAccess.getXForLoopExpressionRule()); }
+	 ruleXForLoopExpression
+{ after(grammarAccess.getXForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+(rule__XForLoopExpression__Group__0)
+{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression 
+:
+{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 ruleXBasicForLoopExpression
+{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+(rule__XBasicForLoopExpression__Group__0)
+{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression 
+:
+{ before(grammarAccess.getXWhileExpressionRule()); }
+	 ruleXWhileExpression
+{ after(grammarAccess.getXWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+(rule__XWhileExpression__Group__0)
+{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression 
+:
+{ before(grammarAccess.getXDoWhileExpressionRule()); }
+	 ruleXDoWhileExpression
+{ after(grammarAccess.getXDoWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+(rule__XDoWhileExpression__Group__0)
+{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression 
+:
+{ before(grammarAccess.getXBlockExpressionRule()); }
+	 ruleXBlockExpression
+{ after(grammarAccess.getXBlockExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+(rule__XBlockExpression__Group__0)
+{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration 
+:
+{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 ruleXExpressionOrVarDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+(rule__XExpressionOrVarDeclaration__Alternatives)
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration 
+:
+{ before(grammarAccess.getXVariableDeclarationRule()); }
+	 ruleXVariableDeclaration
+{ after(grammarAccess.getXVariableDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+(rule__XVariableDeclaration__Group__0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter 
+:
+{ before(grammarAccess.getJvmFormalParameterRule()); }
+	 ruleJvmFormalParameter
+{ after(grammarAccess.getJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+(rule__JvmFormalParameter__Group__0)
+{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter 
+:
+{ before(grammarAccess.getFullJvmFormalParameterRule()); }
+	 ruleFullJvmFormalParameter
+{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+(rule__FullJvmFormalParameter__Group__0)
+{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall 
+:
+{ before(grammarAccess.getXFeatureCallRule()); }
+	 ruleXFeatureCall
+{ after(grammarAccess.getXFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
+(rule__XFeatureCall__Group__0)
+{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID 
+:
+{ before(grammarAccess.getFeatureCallIDRule()); }
+	 ruleFeatureCallID
+{ after(grammarAccess.getFeatureCallIDRule()); } 
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+(rule__FeatureCallID__Alternatives)
+{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper 
+:
+{ before(grammarAccess.getIdOrSuperRule()); }
+	 ruleIdOrSuper
+{ after(grammarAccess.getIdOrSuperRule()); } 
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+(rule__IdOrSuper__Alternatives)
+{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall 
+:
+{ before(grammarAccess.getXConstructorCallRule()); }
+	 ruleXConstructorCall
+{ after(grammarAccess.getXConstructorCallRule()); } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
+(rule__XConstructorCall__Group__0)
+{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral 
+:
+{ before(grammarAccess.getXBooleanLiteralRule()); }
+	 ruleXBooleanLiteral
+{ after(grammarAccess.getXBooleanLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+(rule__XBooleanLiteral__Group__0)
+{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral 
+:
+{ before(grammarAccess.getXNullLiteralRule()); }
+	 ruleXNullLiteral
+{ after(grammarAccess.getXNullLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
+(rule__XNullLiteral__Group__0)
+{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral 
+:
+{ before(grammarAccess.getXNumberLiteralRule()); }
+	 ruleXNumberLiteral
+{ after(grammarAccess.getXNumberLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+(rule__XNumberLiteral__Group__0)
+{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral 
+:
+{ before(grammarAccess.getXStringLiteralRule()); }
+	 ruleXStringLiteral
+{ after(grammarAccess.getXStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
+(rule__XStringLiteral__Group__0)
+{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral 
+:
+{ before(grammarAccess.getXTypeLiteralRule()); }
+	 ruleXTypeLiteral
+{ after(grammarAccess.getXTypeLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+(rule__XTypeLiteral__Group__0)
+{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression 
+:
+{ before(grammarAccess.getXThrowExpressionRule()); }
+	 ruleXThrowExpression
+{ after(grammarAccess.getXThrowExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+(rule__XThrowExpression__Group__0)
+{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression 
+:
+{ before(grammarAccess.getXReturnExpressionRule()); }
+	 ruleXReturnExpression
+{ after(grammarAccess.getXReturnExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+(rule__XReturnExpression__Group__0)
+{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression 
+:
+{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+(rule__XTryCatchFinallyExpression__Group__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression 
+:
+{ before(grammarAccess.getXSynchronizedExpressionRule()); }
+	 ruleXSynchronizedExpression
+{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+(rule__XSynchronizedExpression__Group__0)
+{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause 
+:
+{ before(grammarAccess.getXCatchClauseRule()); }
+	 ruleXCatchClause
+{ after(grammarAccess.getXCatchClauseRule()); } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
+(rule__XCatchClause__Group__0)
+{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName 
+:
+{ before(grammarAccess.getQualifiedNameRule()); }
+	 ruleQualifiedName
+{ after(grammarAccess.getQualifiedNameRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getQualifiedNameAccess().getGroup()); }
+(rule__QualifiedName__Group__0)
+{ after(grammarAccess.getQualifiedNameAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNumber
+entryRuleNumber 
+@init {
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+:
+{ before(grammarAccess.getNumberRule()); }
+	 ruleNumber
+{ after(grammarAccess.getNumberRule()); } 
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber
+    @init {
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNumberAccess().getAlternatives()); }
+(rule__Number__Alternatives)
+{ after(grammarAccess.getNumberAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+	myHiddenTokenState.restore();
+}
+
+
+
+
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference 
+:
+{ before(grammarAccess.getJvmTypeReferenceRule()); }
+	 ruleJvmTypeReference
+{ after(grammarAccess.getJvmTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+(rule__JvmTypeReference__Alternatives)
+{ after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets 
+:
+{ before(grammarAccess.getArrayBracketsRule()); }
+	 ruleArrayBrackets
+{ after(grammarAccess.getArrayBracketsRule()); } 
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getArrayBracketsAccess().getGroup()); }
+(rule__ArrayBrackets__Group__0)
+{ after(grammarAccess.getArrayBracketsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef 
+:
+{ before(grammarAccess.getXFunctionTypeRefRule()); }
+	 ruleXFunctionTypeRef
+{ after(grammarAccess.getXFunctionTypeRefRule()); } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+(rule__XFunctionTypeRef__Group__0)
+{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference 
+:
+{ before(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 ruleJvmParameterizedTypeReference
+{ after(grammarAccess.getJvmParameterizedTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+(rule__JvmParameterizedTypeReference__Group__0)
+{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference 
+:
+{ before(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 ruleJvmArgumentTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+(rule__JvmArgumentTypeReference__Alternatives)
+{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference 
+:
+{ before(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmWildcardTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+(rule__JvmWildcardTypeReference__Group__0)
+{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound 
+:
+{ before(grammarAccess.getJvmUpperBoundRule()); }
+	 ruleJvmUpperBound
+{ after(grammarAccess.getJvmUpperBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+(rule__JvmUpperBound__Group__0)
+{ after(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded 
+:
+{ before(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 ruleJvmUpperBoundAnded
+{ after(grammarAccess.getJvmUpperBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+(rule__JvmUpperBoundAnded__Group__0)
+{ after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound 
+:
+{ before(grammarAccess.getJvmLowerBoundRule()); }
+	 ruleJvmLowerBound
+{ after(grammarAccess.getJvmLowerBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+(rule__JvmLowerBound__Group__0)
+{ after(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded 
+:
+{ before(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 ruleJvmLowerBoundAnded
+{ after(grammarAccess.getJvmLowerBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+(rule__JvmLowerBoundAnded__Group__0)
+{ after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard 
+:
+{ before(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	 ruleQualifiedNameWithWildcard
+{ after(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+(rule__QualifiedNameWithWildcard__Group__0)
+{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidID
+entryRuleValidID 
+:
+{ before(grammarAccess.getValidIDRule()); }
+	 ruleValidID
+{ after(grammarAccess.getValidIDRule()); } 
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration 
+:
+{ before(grammarAccess.getXImportDeclarationRule()); }
+	 ruleXImportDeclaration
+{ after(grammarAccess.getXImportDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+(rule__XImportDeclaration__Group__0)
+{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport 
+:
+{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	 ruleQualifiedNameInStaticImport
+{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+(rule__QualifiedNameInStaticImport__Group__0)
+{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+)
+(
+{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+(rule__QualifiedNameInStaticImport__Group__0)*
+{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+// Rule LegendPlacementEnum
+ruleLegendPlacementEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); }
+(rule__LegendPlacementEnum__Alternatives)
+{ after(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule ToggleTypeEnum
+ruleToggleTypeEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); }
+(rule__ToggleTypeEnum__Alternatives)
+{ after(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule TooltipLocationEnum
+ruleTooltipLocationEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); }
+(rule__TooltipLocationEnum__Alternatives)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule RenderTypeEnum
+ruleRenderTypeEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); }
+(rule__RenderTypeEnum__Alternatives)
+{ after(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__ChartOption__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); }
+	ruleChartBar
+{ after(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); }
+	ruleChartLine
+{ after(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); }
+	ruleChartPie
+{ after(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); }
+	ruleChartDonut
+{ after(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); }
+	ruleChartBubble
+{ after(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); }
+	ruleChartGauge
+{ after(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); }
+	ruleChartTree
+{ after(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Alternatives_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); }
+(rule__ChartBubble__GradientAssignment_2_1_0)
+{ after(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); }
+(rule__ChartBubble__TransparentAssignment_2_1_1)
+{ after(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); }
+(rule__ChartTree__MapAssignment_2_0)
+{ after(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); }
+(rule__ChartTree__CollapsibleAssignment_2_1)
+{ after(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartElement__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); }
+	ruleChartAxis
+{ after(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); }
+	ruleChartLegend
+{ after(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); }
+	ruleChartHighlighter
+{ after(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_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__LegendPlacementEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); }
+(	'inside' 
+)
+{ after(grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); }
+(	'inside-grid' 
+)
+{ after(grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); }
+(	'outside' 
+)
+{ after(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); }
+(	'outside-grid' 
+)
+{ after(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ToggleTypeEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); }
+(	'normal' 
+)
+{ after(grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); }
+(	'slow' 
+)
+{ after(grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); }
+(	'fast' 
+)
+{ after(grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TooltipLocationEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); }
+(	'north' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); }
+(	'north-east' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); }
+(	'east' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); }
+(	'south-east' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); }
+(	'south' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); }
+(	'south-west' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); }
+(	'west' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); }
+(	'north-west' 
+)
+{ after(grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RenderTypeEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); }
+(	'category' 
+)
+{ after(grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); }
+(	'linear' 
+)
+{ after(grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); }
+(	'date' 
+)
+{ after(grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); }
+(	'logarithmic' 
+)
+{ after(grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); }
+(	'pyramid' 
+)
+{ after(grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__ChartPackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group__0__Impl
+	rule__ChartPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getChartPackageAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartPackageAccess().getChartPackageAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group__1__Impl
+	rule__ChartPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getPackageKeyword_1()); }
+
+	'package' 
+
+{ after(grammarAccess.getChartPackageAccess().getPackageKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group__2__Impl
+	rule__ChartPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getNameAssignment_2()); }
+(rule__ChartPackage__NameAssignment_2)
+{ after(grammarAccess.getChartPackageAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getGroup_3()); }
+(rule__ChartPackage__Group_3__0)?
+{ after(grammarAccess.getChartPackageAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ChartPackage__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group_3__0__Impl
+	rule__ChartPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group_3__1__Impl
+	rule__ChartPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getImportsAssignment_3_1()); }
+(rule__ChartPackage__ImportsAssignment_3_1)*
+{ after(grammarAccess.getChartPackageAccess().getImportsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group_3__2__Impl
+	rule__ChartPackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getChartsAssignment_3_2()); }
+(rule__ChartPackage__ChartsAssignment_3_2)*
+{ after(grammarAccess.getChartPackageAccess().getChartsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Chart__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__0__Impl
+	rule__Chart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getChartAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartAccess().getChartAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__1__Impl
+	rule__Chart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getChartKeyword_1()); }
+
+	'chart' 
+
+{ after(grammarAccess.getChartAccess().getChartKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__2__Impl
+	rule__Chart__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getNameAssignment_2()); }
+(rule__Chart__NameAssignment_2)
+{ after(grammarAccess.getChartAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__3__Impl
+	rule__Chart__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getGroup_3()); }
+(rule__Chart__Group_3__0)?
+{ after(grammarAccess.getChartAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__4__Impl
+	rule__Chart__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getAsKeyword_4()); }
+
+	'as' 
+
+{ after(grammarAccess.getChartAccess().getAsKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__5__Impl
+	rule__Chart__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getCharttypeAssignment_5()); }
+(rule__Chart__CharttypeAssignment_5)
+{ after(grammarAccess.getChartAccess().getCharttypeAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__6__Impl
+	rule__Chart__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getGroup_6()); }
+(rule__Chart__Group_6__0)?
+{ after(grammarAccess.getChartAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getGroup_7()); }
+(rule__Chart__Group_7__0)?
+{ after(grammarAccess.getChartAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Chart__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group_3__0__Impl
+	rule__Chart__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getDescriptionAssignment_3_0()); }
+(rule__Chart__DescriptionAssignment_3_0)
+{ after(grammarAccess.getChartAccess().getDescriptionAssignment_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1()); }
+(rule__Chart__DescriptionValueAssignment_3_1)
+{ after(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Chart__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group_6__0__Impl
+	rule__Chart__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getPollingAssignment_6_0()); }
+(rule__Chart__PollingAssignment_6_0)
+{ after(grammarAccess.getChartAccess().getPollingAssignment_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getPollingTimeAssignment_6_1()); }
+(rule__Chart__PollingTimeAssignment_6_1)
+{ after(grammarAccess.getChartAccess().getPollingTimeAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Chart__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group_7__0__Impl
+	rule__Chart__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getUsingKeyword_7_0()); }
+
+	'using' 
+
+{ after(grammarAccess.getChartAccess().getUsingKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Chart__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAccess().getSourceAssignment_7_1()); }
+(rule__Chart__SourceAssignment_7_1)
+{ after(grammarAccess.getChartAccess().getSourceAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartBar__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBar__Group__0__Impl
+	rule__ChartBar__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBarAccess().getChartBarAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartBarAccess().getChartBarAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBar__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBar__Group__1__Impl
+	rule__ChartBar__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBarAccess().getBarKeyword_1()); }
+
+	'bar' 
+
+{ after(grammarAccess.getChartBarAccess().getBarKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBar__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBar__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBarAccess().getUnorderedGroup_2()); }
+(rule__ChartBar__UnorderedGroup_2)
+{ after(grammarAccess.getChartBarAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartLine__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLine__Group__0__Impl
+	rule__ChartLine__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLineAccess().getChartLineAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartLineAccess().getChartLineAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLine__Group__1__Impl
+	rule__ChartLine__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLineAccess().getLineKeyword_1()); }
+
+	'line' 
+
+{ after(grammarAccess.getChartLineAccess().getLineKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLine__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLineAccess().getUnorderedGroup_2()); }
+(rule__ChartLine__UnorderedGroup_2)
+{ after(grammarAccess.getChartLineAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartLine__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLine__Group_2_3__0__Impl
+	rule__ChartLine__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0()); }
+(rule__ChartLine__CursorAssignment_2_3_0)
+{ after(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLine__Group_2_3__1__Impl
+	rule__ChartLine__Group_2_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1()); }
+(rule__ChartLine__ZoomAssignment_2_3_1)?
+{ after(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__Group_2_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLine__Group_2_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2()); }
+(rule__ChartLine__TooltipAssignment_2_3_2)?
+{ after(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartPie__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPie__Group__0__Impl
+	rule__ChartPie__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPieAccess().getChartPieAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartPieAccess().getChartPieAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPie__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPie__Group__1__Impl
+	rule__ChartPie__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPieAccess().getPieKeyword_1()); }
+
+	'pie' 
+
+{ after(grammarAccess.getChartPieAccess().getPieKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPie__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartPie__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartPieAccess().getEmptyAssignment_2()); }
+(rule__ChartPie__EmptyAssignment_2)?
+{ after(grammarAccess.getChartPieAccess().getEmptyAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartDonut__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDonut__Group__0__Impl
+	rule__ChartDonut__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDonut__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDonutAccess().getChartDonutAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartDonutAccess().getChartDonutAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDonut__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDonut__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDonut__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDonutAccess().getDonutKeyword_1()); }
+
+	'donut' 
+
+{ after(grammarAccess.getChartDonutAccess().getDonutKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartBubble__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBubble__Group__0__Impl
+	rule__ChartBubble__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBubbleAccess().getChartBubbleAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartBubbleAccess().getChartBubbleAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBubble__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBubble__Group__1__Impl
+	rule__ChartBubble__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBubbleAccess().getBubbleKeyword_1()); }
+
+	'bubble' 
+
+{ after(grammarAccess.getChartBubbleAccess().getBubbleKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBubble__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBubble__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()); }
+(rule__ChartBubble__UnorderedGroup_2)?
+{ after(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartBubble__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBubble__Group_2_0__0__Impl
+	rule__ChartBubble__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0()); }
+(rule__ChartBubble__MultiplierAssignment_2_0_0)
+{ after(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBubble__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartBubble__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1()); }
+(rule__ChartBubble__MultiplierValueAssignment_2_0_1)
+{ after(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartGauge__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group__0__Impl
+	rule__ChartGauge__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getChartGaugeAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartGaugeAccess().getChartGaugeAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group__1__Impl
+	rule__ChartGauge__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getGaugeKeyword_1()); }
+
+	'gauge' 
+
+{ after(grammarAccess.getChartGaugeAccess().getGaugeKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2()); }
+(rule__ChartGauge__UnorderedGroup_2)
+{ after(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartGauge__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_0__0__Impl
+	rule__ChartGauge__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0()); }
+(rule__ChartGauge__LabeledAssignment_2_0_0)
+{ after(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1()); }
+(rule__ChartGauge__LabelValueAssignment_2_0_1)
+{ after(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartGauge__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_1__0__Impl
+	rule__ChartGauge__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0()); }
+(rule__ChartGauge__HasTicksAssignment_2_1_0)
+{ after(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_1__1__Impl
+	rule__ChartGauge__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1()); }
+
+	'minimum' 
+
+{ after(grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_1__2__Impl
+	rule__ChartGauge__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2()); }
+(rule__ChartGauge__MinValueAssignment_2_1_2)
+{ after(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_1__3__Impl
+	rule__ChartGauge__Group_2_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3()); }
+
+	'maximum' 
+
+{ after(grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4()); }
+(rule__ChartGauge__MaxValueAssignment_2_1_4)
+{ after(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ChartGauge__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_2__0__Impl
+	rule__ChartGauge__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0()); }
+(rule__ChartGauge__HasIntervalsAssignment_2_2_0)
+{ after(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_2__1__Impl
+	rule__ChartGauge__Group_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_2__2__Impl
+	rule__ChartGauge__Group_2_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2()); }
+(rule__ChartGauge__IntervalsAssignment_2_2_2)*
+{ after(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartGauge__Group_2_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ChartTree__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartTree__Group__0__Impl
+	rule__ChartTree__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartTreeAccess().getChartTreeAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartTreeAccess().getChartTreeAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartTree__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartTree__Group__1__Impl
+	rule__ChartTree__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartTreeAccess().getTreeKeyword_1()); }
+
+	'tree' 
+
+{ after(grammarAccess.getChartTreeAccess().getTreeKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartTree__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartTree__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartTreeAccess().getAlternatives_2()); }
+(rule__ChartTree__Alternatives_2)
+{ after(grammarAccess.getChartTreeAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartNumberInterval__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartNumberInterval__Group__0__Impl
+	rule__ChartNumberInterval__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0()); }
+(
+
+)
+{ after(grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartNumberInterval__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartNumberInterval__Group__1__Impl
+	rule__ChartNumberInterval__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1()); }
+
+	'up to' 
+
+{ after(grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartNumberInterval__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartNumberInterval__Group__2__Impl
+	rule__ChartNumberInterval__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2()); }
+(rule__ChartNumberInterval__NumberIntervalValueAssignment_2)
+{ after(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartNumberInterval__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartNumberInterval__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3()); }
+(rule__ChartNumberInterval__NumberRangeAssignment_3)
+{ after(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__ChartDatamart__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDatamart__Group__0__Impl
+	rule__ChartDatamart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDatamartAccess().getDatamartKeyword_0()); }
+
+	'datamart' 
+
+{ after(grammarAccess.getChartDatamartAccess().getDatamartKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDatamart__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDatamart__Group__1__Impl
+	rule__ChartDatamart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1()); }
+(rule__ChartDatamart__DatamartRefAssignment_1)
+{ after(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDatamart__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDatamart__Group__2__Impl
+	rule__ChartDatamart__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDatamart__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDatamart__Group__3__Impl
+	rule__ChartDatamart__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDatamartAccess().getElementsAssignment_3()); }
+(rule__ChartDatamart__ElementsAssignment_3)*
+{ after(grammarAccess.getChartDatamartAccess().getElementsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDatamart__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartDatamart__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ChartLegend__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLegend__Group__0__Impl
+	rule__ChartLegend__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLegendAccess().getLegendKeyword_0()); }
+
+	'legend' 
+
+{ after(grammarAccess.getChartLegendAccess().getLegendKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLegend__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLegend__Group__1__Impl
+	rule__ChartLegend__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLegendAccess().getPlacementAssignment_1()); }
+(rule__ChartLegend__PlacementAssignment_1)
+{ after(grammarAccess.getChartLegendAccess().getPlacementAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLegend__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLegend__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLegendAccess().getGroup_2()); }
+(rule__ChartLegend__Group_2__0)?
+{ after(grammarAccess.getChartLegendAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartLegend__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLegend__Group_2__0__Impl
+	rule__ChartLegend__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0()); }
+(rule__ChartLegend__ToggleAssignment_2_0)
+{ after(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLegend__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLegend__Group_2__1__Impl
+	rule__ChartLegend__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1()); }
+(rule__ChartLegend__ReplotAssignment_2_1)
+{ after(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLegend__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartLegend__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2()); }
+(rule__ChartLegend__ToggleTypeAssignment_2_2)
+{ after(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartHighlighter__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartHighlighter__Group__0__Impl
+	rule__ChartHighlighter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0()); }
+
+	'tooltip' 
+
+{ after(grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartHighlighter__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartHighlighter__Group__1__Impl
+	rule__ChartHighlighter__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1()); }
+(rule__ChartHighlighter__LocationAssignment_1)
+{ after(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartHighlighter__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartHighlighter__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartHighlighterAccess().getGroup_2()); }
+(rule__ChartHighlighter__Group_2__0)
+{ after(grammarAccess.getChartHighlighterAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ChartHighlighter__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartHighlighter__Group_2__0__Impl
+	rule__ChartHighlighter__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0()); }
+(rule__ChartHighlighter__TooltipAlwaysAssignment_2_0)?
+{ after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartHighlighter__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartHighlighter__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1()); }
+(rule__ChartHighlighter__InsideChartAssignment_2_1)?
+{ after(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartAxis__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group__0__Impl
+	rule__ChartAxis__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getAxisKeyword_0()); }
+
+	'axis' 
+
+{ after(grammarAccess.getChartAxisAccess().getAxisKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group__1__Impl
+	rule__ChartAxis__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getAxisAssignment_1()); }
+(rule__ChartAxis__AxisAssignment_1)
+{ after(grammarAccess.getChartAxisAccess().getAxisAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group__2__Impl
+	rule__ChartAxis__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getRendersKeyword_2()); }
+
+	'renders' 
+
+{ after(grammarAccess.getChartAxisAccess().getRendersKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group__3__Impl
+	rule__ChartAxis__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3()); }
+(rule__ChartAxis__RenderTypeAssignment_3)
+{ after(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group__4__Impl
+	rule__ChartAxis__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4()); }
+(rule__ChartAxis__ShortLabelAssignment_4)?
+{ after(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getGroup_5()); }
+(rule__ChartAxis__Group_5__0)?
+{ after(grammarAccess.getChartAxisAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ChartAxis__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group_5__0__Impl
+	rule__ChartAxis__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getTickangleKeyword_5_0()); }
+
+	'tickangle' 
+
+{ after(grammarAccess.getChartAxisAccess().getTickangleKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartAxis__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1()); }
+(rule__ChartAxis__AngleAssignment_5_1)
+{ after(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartSegmentColor__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartSegmentColor__Group__0__Impl
+	rule__ChartSegmentColor__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartSegmentColor__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0()); }
+
+	'segmentcolor' 
+
+{ after(grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartSegmentColor__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartSegmentColor__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartSegmentColor__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1()); }
+(rule__ChartSegmentColor__RgbAssignment_1)
+{ after(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartImport__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartImport__Group__0__Impl
+	rule__ChartImport__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartImport__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartImportAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getChartImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartImport__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartImport__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartImport__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartImportAccess().getImportedNamespaceAssignment_1()); }
+(rule__ChartImport__ImportedNamespaceAssignment_1)
+{ after(grammarAccess.getChartImportAccess().getImportedNamespaceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SignedNumber__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SignedNumber__Group__0__Impl
+	rule__SignedNumber__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignedNumber__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SignedNumber__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SignedNumber__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignedNumber__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartQualifiedNameWithWildCard__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartQualifiedNameWithWildCard__Group__0__Impl
+	rule__ChartQualifiedNameWithWildCard__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartQualifiedNameWithWildCard__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); }
+	ruleQualifiedName
+{ after(grammarAccess.getChartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartQualifiedNameWithWildCard__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartQualifiedNameWithWildCard__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartQualifiedNameWithWildCard__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup_1()); }
+(rule__ChartQualifiedNameWithWildCard__Group_1__0)?
+{ after(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ChartQualifiedNameWithWildCard__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartQualifiedNameWithWildCard__Group_1__0__Impl
+	rule__ChartQualifiedNameWithWildCard__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartQualifiedNameWithWildCard__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getChartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartQualifiedNameWithWildCard__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ChartQualifiedNameWithWildCard__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartQualifiedNameWithWildCard__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getChartQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getChartQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_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()); }
+)
+
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.tokens b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.tokens
new file mode 100644
index 0000000..42771ee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.tokens
@@ -0,0 +1,289 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=99
+'%'=39
+'%='=20
+'&&'=15
+'&'=122
+'('=95
+')'=96
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=97
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=106
+'::'=148
+';'=102
+'<'=27
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=121
+'?.'=149
+'?:'=33
+'@'=94
+'['=100
+']'=98
+'always'=146
+'animated'=126
+'as'=75
+'axis'=90
+'bar'=77
+'bubble'=81
+'case'=108
+'catch'=120
+'category'=66
+'chart'=74
+'collapsible'=143
+'cursor'=131
+'datamart'=87
+'date'=68
+'default'=107
+'described by'=123
+'do'=111
+'donut'=80
+'east'=60
+'else'=104
+'empty'=135
+'extends'=45
+'extension'=48
+'false'=50
+'fast'=57
+'fillZero'=133
+'filled'=134
+'finally'=118
+'for'=109
+'gauge'=82
+'gradient'=137
+'hasTicks'=140
+'if'=103
+'import'=47
+'inside'=51
+'inside-grid'=52
+'instanceof'=101
+'intervals'=141
+'label'=139
+'legend'=88
+'line'=78
+'linear'=67
+'logarithmic'=69
+'map'=142
+'maximum'=84
+'minimum'=83
+'multiplier'=136
+'new'=112
+'normal'=55
+'north'=58
+'north-east'=59
+'north-west'=65
+'null'=113
+'outside'=53
+'outside-grid'=54
+'package'=71
+'pie'=79
+'polling'=124
+'pyramid'=70
+'renders'=91
+'replot'=145
+'return'=116
+'segmentcolor'=93
+'shaded'=125
+'shortLabel'=147
+'showMarker'=129
+'slow'=56
+'south'=62
+'south-east'=61
+'south-west'=63
+'stacked'=128
+'static'=46
+'super'=49
+'swapped'=127
+'switch'=105
+'synchronized'=119
+'throw'=115
+'tickangle'=92
+'toggle'=144
+'tooltip'=89
+'transparent'=138
+'tree'=85
+'trendLine'=130
+'true'=152
+'try'=117
+'typeof'=114
+'up to'=86
+'using'=76
+'val'=44
+'var'=151
+'west'=64
+'while'=110
+'zoom'=132
+'{'=72
+'|'=150
+'||'=14
+'}'=73
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=5
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=4
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSLLexer.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSLLexer.java
new file mode 100644
index 0000000..e4f821d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSLLexer.java
@@ -0,0 +1,6030 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.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 InternalChartDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=5;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=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__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__152=152;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalChartDSLLexer() {;} 
+    public InternalChartDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalChartDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:14:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:15:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:16:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:17:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:18:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:19:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:20:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:21:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:22:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:23:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:24:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:25:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:27:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:28:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:29:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:30:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:31:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:32:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:33:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:34:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:35:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:36:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:37:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:38:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:39:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:40:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:41:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:42:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:43:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:44:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:45:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:46:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:47:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:48:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:49:7: ( 'inside' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:49:9: 'inside'
+            {
+            match("inside"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:50:7: ( 'inside-grid' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:50:9: 'inside-grid'
+            {
+            match("inside-grid"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:51:7: ( 'outside' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:51:9: 'outside'
+            {
+            match("outside"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:52:7: ( 'outside-grid' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:52:9: 'outside-grid'
+            {
+            match("outside-grid"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:53:7: ( 'normal' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:53:9: 'normal'
+            {
+            match("normal"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:54:7: ( 'slow' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:54:9: 'slow'
+            {
+            match("slow"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:55:7: ( 'fast' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:55:9: 'fast'
+            {
+            match("fast"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:56:7: ( 'north' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:56:9: 'north'
+            {
+            match("north"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:57:7: ( 'north-east' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:57:9: 'north-east'
+            {
+            match("north-east"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:58:7: ( 'east' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:58:9: 'east'
+            {
+            match("east"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:59:7: ( 'south-east' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:59:9: 'south-east'
+            {
+            match("south-east"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:60:7: ( 'south' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:60:9: 'south'
+            {
+            match("south"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:61:7: ( 'south-west' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:61:9: 'south-west'
+            {
+            match("south-west"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:62:7: ( 'west' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:62:9: 'west'
+            {
+            match("west"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:63:7: ( 'north-west' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:63:9: 'north-west'
+            {
+            match("north-west"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:64:7: ( 'category' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:64:9: 'category'
+            {
+            match("category"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:65:7: ( 'linear' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:65:9: 'linear'
+            {
+            match("linear"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:66:7: ( 'date' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:66:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:67:7: ( 'logarithmic' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:67:9: 'logarithmic'
+            {
+            match("logarithmic"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:68:7: ( 'pyramid' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:68:9: 'pyramid'
+            {
+            match("pyramid"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:69:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:69:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:70:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:71:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:72:7: ( 'chart' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:72:9: 'chart'
+            {
+            match("chart"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:73:7: ( 'as' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:73:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:74:7: ( 'using' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:74:9: 'using'
+            {
+            match("using"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:75:7: ( 'bar' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:75:9: 'bar'
+            {
+            match("bar"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:76:7: ( 'line' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:76:9: 'line'
+            {
+            match("line"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:77:7: ( 'pie' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:77:9: 'pie'
+            {
+            match("pie"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:78:7: ( 'donut' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:78:9: 'donut'
+            {
+            match("donut"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:79:7: ( 'bubble' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:79:9: 'bubble'
+            {
+            match("bubble"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:80:7: ( 'gauge' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:80:9: 'gauge'
+            {
+            match("gauge"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:81:7: ( 'minimum' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:81:9: 'minimum'
+            {
+            match("minimum"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:82:7: ( 'maximum' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:82:9: 'maximum'
+            {
+            match("maximum"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:83:7: ( 'tree' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:83:9: 'tree'
+            {
+            match("tree"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:84:7: ( 'up to' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:84:9: 'up to'
+            {
+            match("up to"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:85:7: ( 'datamart' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:85:9: 'datamart'
+            {
+            match("datamart"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:86:7: ( 'legend' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:86:9: 'legend'
+            {
+            match("legend"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:87:7: ( 'tooltip' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:87:9: 'tooltip'
+            {
+            match("tooltip"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:88:7: ( 'axis' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:88:9: 'axis'
+            {
+            match("axis"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:89:7: ( 'renders' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:89:9: 'renders'
+            {
+            match("renders"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:90:7: ( 'tickangle' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:90:9: 'tickangle'
+            {
+            match("tickangle"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:91:7: ( 'segmentcolor' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:91:9: 'segmentcolor'
+            {
+            match("segmentcolor"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:92:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:92:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:93:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:93:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:94:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:94:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:95:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:96:7: ( ']' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:97:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:98:8: ( '[' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:99:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:99:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:100:8: ( ';' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:101:8: ( 'if' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:101:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:102:8: ( 'else' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:102:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:103:8: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:103:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:104:8: ( ':' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:104:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:105:8: ( 'default' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:105:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:106:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:106:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:107:8: ( 'for' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:107:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:108:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:108:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:109:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:109:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:110:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:110:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:111:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:111:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:112:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:112:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:113:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:113:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:114:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:114:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
+    // $ANTLR start "T__117"
+    public final void mT__117() throws RecognitionException {
+        try {
+            int _type = T__117;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:115:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:115:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__117"
+
+    // $ANTLR start "T__118"
+    public final void mT__118() throws RecognitionException {
+        try {
+            int _type = T__118;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:116:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:116:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__118"
+
+    // $ANTLR start "T__119"
+    public final void mT__119() throws RecognitionException {
+        try {
+            int _type = T__119;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:117:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:117:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__119"
+
+    // $ANTLR start "T__120"
+    public final void mT__120() throws RecognitionException {
+        try {
+            int _type = T__120;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:118:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:118:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__120"
+
+    // $ANTLR start "T__121"
+    public final void mT__121() throws RecognitionException {
+        try {
+            int _type = T__121;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:119:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:119:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__121"
+
+    // $ANTLR start "T__122"
+    public final void mT__122() throws RecognitionException {
+        try {
+            int _type = T__122;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:120:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:120:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__122"
+
+    // $ANTLR start "T__123"
+    public final void mT__123() throws RecognitionException {
+        try {
+            int _type = T__123;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:121:8: ( 'described by' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:121:10: 'described by'
+            {
+            match("described by"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__123"
+
+    // $ANTLR start "T__124"
+    public final void mT__124() throws RecognitionException {
+        try {
+            int _type = T__124;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:122:8: ( 'polling' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:122:10: 'polling'
+            {
+            match("polling"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:123:8: ( 'shaded' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:123:10: 'shaded'
+            {
+            match("shaded"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:124:8: ( 'animated' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:124:10: 'animated'
+            {
+            match("animated"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:125:8: ( 'swapped' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:125:10: 'swapped'
+            {
+            match("swapped"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:126:8: ( 'stacked' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:126:10: 'stacked'
+            {
+            match("stacked"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:127:8: ( 'showMarker' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:127:10: 'showMarker'
+            {
+            match("showMarker"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:128:8: ( 'trendLine' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:128:10: 'trendLine'
+            {
+            match("trendLine"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:129:8: ( 'cursor' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:129:10: 'cursor'
+            {
+            match("cursor"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:130:8: ( 'zoom' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:130:10: 'zoom'
+            {
+            match("zoom"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:131:8: ( 'fillZero' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:131:10: 'fillZero'
+            {
+            match("fillZero"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:132:8: ( 'filled' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:132:10: 'filled'
+            {
+            match("filled"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:133:8: ( 'empty' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:133:10: 'empty'
+            {
+            match("empty"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:134:8: ( 'multiplier' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:134:10: 'multiplier'
+            {
+            match("multiplier"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:135:8: ( 'gradient' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:135:10: 'gradient'
+            {
+            match("gradient"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:136:8: ( 'transparent' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:136:10: 'transparent'
+            {
+            match("transparent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:137:8: ( 'label' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:137:10: 'label'
+            {
+            match("label"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:138:8: ( 'hasTicks' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:138:10: 'hasTicks'
+            {
+            match("hasTicks"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "T__141"
+    public final void mT__141() throws RecognitionException {
+        try {
+            int _type = T__141;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:139:8: ( 'intervals' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:139:10: 'intervals'
+            {
+            match("intervals"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:140:8: ( 'map' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:140:10: 'map'
+            {
+            match("map"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:141:8: ( 'collapsible' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:141:10: 'collapsible'
+            {
+            match("collapsible"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:142:8: ( 'toggle' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:142:10: 'toggle'
+            {
+            match("toggle"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:143:8: ( 'replot' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:143:10: 'replot'
+            {
+            match("replot"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__145"
+
+    // $ANTLR start "T__146"
+    public final void mT__146() throws RecognitionException {
+        try {
+            int _type = T__146;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:144:8: ( 'always' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:144:10: 'always'
+            {
+            match("always"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__146"
+
+    // $ANTLR start "T__147"
+    public final void mT__147() throws RecognitionException {
+        try {
+            int _type = T__147;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:145:8: ( 'shortLabel' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:145:10: 'shortLabel'
+            {
+            match("shortLabel"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__147"
+
+    // $ANTLR start "T__148"
+    public final void mT__148() throws RecognitionException {
+        try {
+            int _type = T__148;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:146:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:146:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__148"
+
+    // $ANTLR start "T__149"
+    public final void mT__149() throws RecognitionException {
+        try {
+            int _type = T__149;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:147:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:147:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__149"
+
+    // $ANTLR start "T__150"
+    public final void mT__150() throws RecognitionException {
+        try {
+            int _type = T__150;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:148:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:148:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__150"
+
+    // $ANTLR start "T__151"
+    public final void mT__151() throws RecognitionException {
+        try {
+            int _type = T__151;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:149:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:149:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:150:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:150:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26765: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26767:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26767:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26767: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26769: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26771:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26771:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26771:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26771: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26771: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26773: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26775:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26775:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26775: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26775: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26777: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26779:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26779:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26779: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26781:16: ( . )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:26781:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=149;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:903: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:912: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:921: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:934: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:942: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:954: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:970: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:986: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1:994: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\70\1\72\1\74\1\77\1\103\1\106\1\112\1\114\1\116\1\120"+
+        "\1\122\1\124\1\127\14\131\2\uffff\7\131\10\uffff\1\u009f\2\131\2"+
+        "\u00a4\1\65\5\uffff\1\u00a9\26\uffff\1\u00ab\5\uffff\1\u00ad\4\uffff"+
+        "\1\131\1\uffff\16\131\1\u00c1\22\131\1\u00d8\5\131\2\uffff\1\u00df"+
+        "\22\131\12\uffff\2\131\1\uffff\1\u00a4\12\uffff\1\u00fb\1\u00fc"+
+        "\21\131\1\uffff\2\131\1\u0113\4\131\1\u0119\16\131\1\uffff\4\131"+
+        "\1\u012e\1\131\1\uffff\4\131\1\uffff\1\u0134\5\131\1\u013a\2\131"+
+        "\1\u013e\14\131\2\uffff\1\131\1\u014c\1\u014d\4\131\1\u0152\15\131"+
+        "\1\u0160\1\uffff\5\131\1\uffff\1\u0167\1\u0168\3\131\1\u016c\3\131"+
+        "\1\u0171\3\131\1\u0175\6\131\1\uffff\1\131\1\u017d\3\131\1\uffff"+
+        "\5\131\1\uffff\1\131\1\u0187\1\131\1\uffff\1\131\1\u018a\10\131"+
+        "\1\u0193\2\131\2\uffff\1\u0197\2\131\1\u019a\1\uffff\1\u019c\13"+
+        "\131\1\u01a8\1\uffff\5\131\1\u01af\2\uffff\1\u01b0\1\131\1\u01b2"+
+        "\1\uffff\1\u01b3\3\131\1\uffff\2\131\1\u01b9\1\uffff\1\131\1\u01bb"+
+        "\5\131\1\uffff\2\131\1\u01c3\1\131\1\u01c5\4\131\1\uffff\2\131\1"+
+        "\uffff\4\131\1\u01d0\3\131\1\uffff\3\131\1\uffff\1\u01d7\1\131\3"+
+        "\uffff\1\131\1\u01dc\2\131\1\u01df\2\131\1\u01e2\1\u01e4\2\131\1"+
+        "\uffff\2\131\1\u01e9\1\131\1\u01eb\3\uffff\1\131\2\uffff\1\u01ef"+
+        "\1\131\1\u01f1\1\131\1\u01f3\1\uffff\1\131\1\uffff\6\131\1\u01fb"+
+        "\1\uffff\1\u01fc\1\uffff\7\131\1\u0204\1\131\1\u0206\1\uffff\1\131"+
+        "\1\u0208\1\u0209\1\131\1\u020b\1\131\1\uffff\1\u020d\2\uffff\1\131"+
+        "\1\uffff\1\u020f\1\131\1\uffff\2\131\3\uffff\2\131\1\u0215\1\131"+
+        "\1\uffff\1\u0218\3\uffff\1\131\1\uffff\1\131\1\uffff\1\131\1\uffff"+
+        "\1\131\1\u021d\1\131\1\u021f\1\u0220\1\u0221\1\131\2\uffff\1\131"+
+        "\1\u0224\1\u0225\3\131\1\u0229\1\uffff\1\131\1\uffff\1\u022b\2\uffff"+
+        "\1\131\1\uffff\1\131\1\uffff\1\131\1\uffff\5\131\1\uffff\1\u0234"+
+        "\2\uffff\1\u0235\2\131\1\u0238\1\uffff\1\131\3\uffff\1\u023a\1\u023b"+
+        "\2\uffff\3\131\1\uffff\1\131\1\uffff\1\u0240\1\u0241\5\131\1\u0247"+
+        "\2\uffff\2\131\1\uffff\1\131\2\uffff\1\131\1\u024c\1\131\1\u024e"+
+        "\2\uffff\2\131\1\u0251\1\u0252\1\u0253\1\uffff\2\131\1\uffff\1\u0256"+
+        "\1\uffff\1\131\1\uffff\2\131\3\uffff\1\u025a\1\u025b\1\uffff\1\u025c"+
+        "\1\u025d\1\u025e\5\uffff";
+    static final String DFA21_eofS =
+        "\u025f\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\2\141\1\145"+
+        "\1\146\1\141\1\165\2\145\4\141\2\uffff\1\154\1\160\3\141\1\150\1"+
+        "\145\10\uffff\1\72\1\157\1\141\2\60\1\44\5\uffff\1\75\26\uffff\1"+
+        "\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\164\2\163\1\160\1\141\1"+
+        "\160\1\157\1\165\1\147\1\141\1\156\1\141\1\160\1\163\1\44\1\154"+
+        "\1\162\1\154\1\164\1\162\1\167\1\154\1\163\1\151\1\163\1\141\1\162"+
+        "\1\154\1\156\2\147\1\142\1\164\1\44\1\146\1\162\1\143\1\145\1\154"+
+        "\2\uffff\1\44\2\151\1\167\1\151\1\40\1\162\1\142\1\165\1\141\1\156"+
+        "\1\160\1\154\1\141\1\147\1\143\1\160\1\162\1\156\12\uffff\1\157"+
+        "\1\163\1\uffff\1\60\12\uffff\2\44\1\145\1\164\1\145\1\164\1\143"+
+        "\1\145\1\167\1\164\1\155\1\164\1\160\1\143\1\144\1\162\1\157\1\151"+
+        "\1\145\1\uffff\1\163\1\164\1\44\1\141\1\154\1\163\1\155\1\44\1\154"+
+        "\1\164\1\154\1\143\1\145\1\162\1\163\1\154\1\145\1\141\2\145\1\141"+
+        "\1\165\1\uffff\1\141\1\143\1\141\1\153\1\44\1\154\1\uffff\1\163"+
+        "\1\155\1\141\1\156\1\uffff\1\44\1\142\1\147\1\144\2\151\1\44\1\164"+
+        "\1\145\1\44\1\156\1\145\1\154\1\147\1\153\1\145\1\157\1\144\1\165"+
+        "\1\154\1\155\1\124\2\uffff\1\156\2\44\1\171\1\151\1\153\1\162\1"+
+        "\44\1\150\1\145\1\143\1\160\1\150\1\145\1\115\1\164\1\162\1\144"+
+        "\1\141\1\162\1\145\1\44\1\uffff\1\154\1\132\1\151\1\141\1\150\1"+
+        "\uffff\2\44\1\145\1\147\1\150\1\44\1\164\1\157\1\141\1\44\1\162"+
+        "\1\156\1\154\1\44\1\155\1\164\1\165\1\162\1\155\1\141\1\uffff\1"+
+        "\151\1\44\1\141\1\171\1\147\1\uffff\1\154\1\145\1\151\2\155\1\uffff"+
+        "\1\151\1\44\1\144\1\uffff\1\163\1\44\1\164\1\154\1\141\1\157\1\167"+
+        "\1\145\1\162\1\157\1\44\1\151\1\144\2\uffff\1\44\1\143\1\145\1\44"+
+        "\1\uffff\1\44\1\156\1\150\1\145\1\162\1\144\1\141\1\114\1\164\1"+
+        "\145\1\156\1\166\1\44\1\uffff\1\154\1\145\2\144\1\154\1\44\2\uffff"+
+        "\1\44\1\157\1\44\1\uffff\1\44\1\162\1\160\1\162\1\uffff\1\151\1"+
+        "\144\1\44\1\uffff\1\141\1\44\1\154\2\151\1\147\1\156\1\uffff\1\164"+
+        "\1\163\1\44\1\145\1\44\1\145\2\165\1\160\1\uffff\1\114\1\160\1\uffff"+
+        "\1\151\1\145\1\156\1\146\1\44\1\162\1\156\1\164\1\uffff\1\143\1"+
+        "\163\1\151\1\uffff\1\44\1\144\1\uffff\1\145\1\uffff\1\164\1\44\1"+
+        "\144\1\157\1\44\1\162\1\141\2\44\1\143\1\141\1\uffff\1\171\1\162"+
+        "\1\44\1\145\1\44\1\145\2\uffff\1\162\2\uffff\1\44\1\163\1\44\1\164"+
+        "\1\44\1\uffff\1\162\1\uffff\1\164\1\142\1\144\1\145\1\147\1\145"+
+        "\1\44\1\uffff\1\44\1\uffff\1\156\2\155\1\154\1\151\1\141\1\160\1"+
+        "\44\1\147\1\44\1\uffff\1\163\2\44\1\153\1\44\1\157\1\uffff\1\44"+
+        "\2\uffff\1\143\1\uffff\1\44\1\156\1\uffff\1\153\1\142\3\uffff\1"+
+        "\145\1\154\1\44\1\157\1\uffff\1\44\3\uffff\1\171\1\uffff\1\151\1"+
+        "\uffff\1\150\1\uffff\1\164\1\44\1\145\3\44\1\144\2\uffff\1\164\2"+
+        "\44\1\151\1\156\1\162\1\44\1\uffff\1\154\1\uffff\1\44\2\uffff\1"+
+        "\163\1\uffff\1\156\1\uffff\1\157\1\uffff\1\151\2\145\1\157\1\163"+
+        "\1\uffff\1\44\2\uffff\1\44\1\142\1\155\1\44\1\uffff\1\144\3\uffff"+
+        "\2\44\2\uffff\3\145\1\uffff\1\145\1\uffff\2\44\1\154\1\172\1\162"+
+        "\1\154\1\146\1\44\2\uffff\1\154\1\151\1\uffff\1\40\2\uffff\1\162"+
+        "\1\44\1\156\1\44\2\uffff\1\157\1\145\3\44\1\uffff\1\145\1\143\1"+
+        "\uffff\1\44\1\uffff\1\164\1\uffff\1\162\1\144\3\uffff\2\44\1\uffff"+
+        "\3\44\5\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\157\2\165\1\150\1\165\2\157\1\171\2\uffff\1\170"+
+        "\1\163\1\165\1\162\1\165\1\171\1\145\10\uffff\1\72\1\157\1\141\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\2\163\1\160\1\141\1\160\1\157\1\165\1\147\1"+
+        "\151\1\156\1\157\1\160\1\164\1\172\1\163\1\162\1\156\1\164\1\162"+
+        "\1\167\1\154\1\163\1\151\1\164\1\141\1\162\1\154\1\156\2\147\1\142"+
+        "\1\164\1\172\1\163\1\162\1\143\1\145\1\154\2\uffff\1\172\2\151\1"+
+        "\167\1\151\1\40\1\162\1\142\1\165\1\141\1\156\1\170\1\154\1\171"+
+        "\1\157\1\143\1\160\1\162\1\164\12\uffff\1\157\1\163\1\uffff\1\154"+
+        "\12\uffff\2\172\1\145\1\164\1\145\2\164\1\145\1\167\1\164\1\155"+
+        "\1\164\1\160\1\143\1\144\1\167\1\157\1\164\1\145\1\uffff\1\163\1"+
+        "\164\1\172\1\141\1\154\1\163\1\164\1\172\1\154\1\164\1\154\2\145"+
+        "\1\162\1\163\1\154\1\145\1\141\3\145\1\165\1\uffff\1\141\1\143\1"+
+        "\141\1\153\1\172\1\154\1\uffff\1\163\1\155\1\141\1\156\1\uffff\1"+
+        "\172\1\142\1\147\1\144\2\151\1\172\1\164\1\156\1\172\1\156\1\145"+
+        "\1\154\1\147\1\153\1\145\1\157\1\144\1\165\1\154\1\155\1\124\2\uffff"+
+        "\1\156\2\172\1\171\1\151\1\153\1\162\1\172\1\150\1\145\1\143\1\160"+
+        "\1\150\1\145\1\115\1\164\1\162\1\144\1\141\1\162\1\145\1\172\1\uffff"+
+        "\1\154\1\145\1\151\1\141\1\150\1\uffff\2\172\1\145\1\147\1\150\1"+
+        "\172\1\164\1\157\1\141\1\172\1\162\1\156\1\154\1\172\1\155\1\164"+
+        "\1\165\1\162\1\155\1\141\1\uffff\1\151\1\172\1\141\1\171\1\147\1"+
+        "\uffff\1\154\1\145\1\151\2\155\1\uffff\1\151\1\172\1\144\1\uffff"+
+        "\1\163\1\172\1\164\1\154\1\141\1\157\1\167\1\145\1\162\1\157\1\172"+
+        "\1\151\1\163\2\uffff\1\172\1\143\1\145\1\172\1\uffff\1\172\1\156"+
+        "\1\150\1\145\1\162\1\144\1\141\1\114\1\164\1\145\1\156\1\166\1\172"+
+        "\1\uffff\1\154\1\145\2\144\1\154\1\172\2\uffff\1\172\1\157\1\172"+
+        "\1\uffff\1\172\1\162\1\160\1\162\1\uffff\1\151\1\144\1\172\1\uffff"+
+        "\1\141\1\172\1\154\2\151\1\147\1\156\1\uffff\1\164\1\163\1\172\1"+
+        "\145\1\172\1\145\2\165\1\160\1\uffff\1\114\1\160\1\uffff\1\151\1"+
+        "\145\1\156\1\146\1\172\1\162\1\156\1\164\1\uffff\1\143\1\163\1\151"+
+        "\1\uffff\1\172\1\144\1\uffff\1\167\1\uffff\1\164\1\172\1\144\1\157"+
+        "\1\172\1\162\1\141\2\172\1\143\1\141\1\uffff\1\171\1\162\1\172\1"+
+        "\145\1\172\1\167\2\uffff\1\162\2\uffff\1\172\1\163\1\172\1\164\1"+
+        "\172\1\uffff\1\162\1\uffff\1\164\1\142\1\144\1\145\1\147\1\145\1"+
+        "\172\1\uffff\1\172\1\uffff\1\156\2\155\1\154\1\151\1\141\1\160\1"+
+        "\172\1\147\1\172\1\uffff\1\163\2\172\1\153\1\172\1\157\1\uffff\1"+
+        "\172\2\uffff\1\143\1\uffff\1\172\1\156\1\uffff\1\153\1\142\3\uffff"+
+        "\1\145\1\154\1\172\1\157\1\uffff\1\172\3\uffff\1\171\1\uffff\1\151"+
+        "\1\uffff\1\150\1\uffff\1\164\1\172\1\145\3\172\1\144\2\uffff\1\164"+
+        "\2\172\1\151\1\156\1\162\1\172\1\uffff\1\154\1\uffff\1\172\2\uffff"+
+        "\1\163\1\uffff\1\156\1\uffff\1\157\1\uffff\1\151\2\145\1\157\1\163"+
+        "\1\uffff\1\172\2\uffff\1\172\1\142\1\155\1\172\1\uffff\1\144\3\uffff"+
+        "\2\172\2\uffff\3\145\1\uffff\1\145\1\uffff\2\172\1\154\1\172\1\162"+
+        "\1\154\1\146\1\172\2\uffff\1\154\1\151\1\uffff\1\40\2\uffff\1\162"+
+        "\1\172\1\156\1\172\2\uffff\1\157\1\145\3\172\1\uffff\1\145\1\143"+
+        "\1\uffff\1\172\1\uffff\1\164\1\uffff\1\162\1\144\3\uffff\2\172\1"+
+        "\uffff\3\172\5\uffff";
+    static final String DFA21_acceptS =
+        "\32\uffff\1\74\1\75\7\uffff\1\122\1\123\1\124\1\125\1\126\1\127"+
+        "\1\130\1\132\6\uffff\1\u0090\2\u0091\1\u0094\1\u0095\1\uffff\1\23"+
+        "\1\1\1\2\1\u008a\1\3\1\156\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6"+
+        "\1\31\1\30\1\7\1\u0092\1\u0093\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\u0089\1\155\1\uffff\1\u0090"+
+        "\47\uffff\1\74\1\75\23\uffff\1\122\1\123\1\124\1\125\1\126\1\127"+
+        "\1\130\1\132\1\u0088\1\136\2\uffff\1\u008d\1\uffff\1\u008e\1\u008f"+
+        "\1\u0091\1\u0094\1\13\1\11\1\14\1\12\1\21\1\22\23\uffff\1\133\26"+
+        "\uffff\1\143\6\uffff\1\77\4\uffff\1\112\26\uffff\1\40\1\u008b\26"+
+        "\uffff\1\141\5\uffff\1\144\24\uffff\1\103\5\uffff\1\101\5\uffff"+
+        "\1\u0082\3\uffff\1\151\15\uffff\1\60\1\134\4\uffff\1\54\15\uffff"+
+        "\1\55\6\uffff\1\145\1\64\3\uffff\1\140\4\uffff\1\102\3\uffff\1\70"+
+        "\7\uffff\1\116\11\uffff\1\111\2\uffff\1\u008c\10\uffff\1\170\3\uffff"+
+        "\1\173\2\uffff\1\45\1\uffff\1\62\13\uffff\1\46\6\uffff\1\56\1\142"+
+        "\1\uffff\1\154\1\76\5\uffff\1\177\1\uffff\1\104\7\uffff\1\100\1"+
+        "\uffff\1\106\12\uffff\1\147\6\uffff\1\42\1\uffff\1\61\1\63\1\uffff"+
+        "\1\135\2\uffff\1\161\2\uffff\1\43\1\50\1\47\4\uffff\1\172\1\uffff"+
+        "\1\53\1\57\1\65\1\uffff\1\167\1\uffff\1\67\1\uffff\1\114\7\uffff"+
+        "\1\u0086\1\105\7\uffff\1\u0084\1\uffff\1\146\1\uffff\1\150\1\u0085"+
+        "\1\uffff\1\41\1\uffff\1\164\1\uffff\1\163\5\uffff\1\152\1\uffff"+
+        "\1\52\1\51\4\uffff\1\137\1\uffff\1\72\1\73\1\160\2\uffff\1\107\1"+
+        "\110\3\uffff\1\115\1\uffff\1\117\10\uffff\1\171\1\66\2\uffff\1\113"+
+        "\1\uffff\1\162\1\175\4\uffff\1\u0080\1\44\5\uffff\1\u0081\2\uffff"+
+        "\1\157\1\uffff\1\166\1\uffff\1\120\2\uffff\1\165\1\u0087\1\131\2"+
+        "\uffff\1\174\3\uffff\1\u0083\1\71\1\176\1\121\1\153";
+    static final String DFA21_specialS =
+        "\1\0\u025e\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\65\2\64\2\65\1\64\22\65\1\64\1\11\1\62\1\50\1\61\1\10\1"+
+            "\3\1\63\1\44\1\45\1\6\1\4\1\46\1\5\1\14\1\7\1\56\11\57\1\53"+
+            "\1\52\1\13\1\1\1\12\1\15\1\43\32\61\1\51\1\65\1\47\1\60\1\61"+
+            "\1\65\1\34\1\36\1\26\1\30\1\17\1\22\1\37\1\55\1\21\2\61\1\27"+
+            "\1\40\1\24\1\23\1\31\1\61\1\42\1\20\1\41\1\35\1\16\1\25\2\61"+
+            "\1\54\1\32\1\2\1\33\uff82\65",
+            "\1\66\1\67",
+            "\1\71",
+            "\1\73",
+            "\1\76\21\uffff\1\75",
+            "\1\102\17\uffff\1\100\1\101",
+            "\1\105\22\uffff\1\104",
+            "\1\110\4\uffff\1\111\15\uffff\1\107",
+            "\1\113",
+            "\1\115",
+            "\1\117",
+            "\1\121",
+            "\1\123",
+            "\1\126\13\uffff\1\125",
+            "\1\130",
+            "\1\133\12\uffff\1\134\1\135\12\uffff\1\132",
+            "\1\142\2\uffff\1\145\3\uffff\1\140\2\uffff\1\141\4\uffff\1"+
+            "\136\1\137\1\uffff\1\143\1\uffff\1\144",
+            "\1\150\6\uffff\1\146\1\147",
+            "\1\151\7\uffff\1\153\5\uffff\1\152",
+            "\1\154",
+            "\1\156\11\uffff\1\155\5\uffff\1\157",
+            "\1\160\2\uffff\1\161",
+            "\1\162\6\uffff\1\163\6\uffff\1\165\5\uffff\1\164",
+            "\1\171\3\uffff\1\170\3\uffff\1\166\5\uffff\1\167",
+            "\1\172\3\uffff\1\174\11\uffff\1\173",
+            "\1\176\7\uffff\1\177\5\uffff\1\u0080\11\uffff\1\175",
+            "",
+            "",
+            "\1\u0086\1\uffff\1\u0085\4\uffff\1\u0083\4\uffff\1\u0084",
+            "\1\u0088\2\uffff\1\u0087",
+            "\1\u0089\23\uffff\1\u008a",
+            "\1\u008b\20\uffff\1\u008c",
+            "\1\u008e\7\uffff\1\u008d\13\uffff\1\u008f",
+            "\1\u0094\1\u0092\5\uffff\1\u0091\2\uffff\1\u0090\6\uffff\1"+
+            "\u0093",
+            "\1\u0095",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009e",
+            "\1\u00a0",
+            "\1\u00a1",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
+            "\13\uffff\1\u00a2\6\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3"+
+            "\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
+            "\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1"+
+            "\u00a5",
+            "\1\131\34\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00aa",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ac",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ae\5\uffff\1\u00af",
+            "",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00ba\7\uffff\1\u00b9",
+            "\1\u00bb",
+            "\1\u00bc\15\uffff\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf\1\u00c0",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u00c2\6\uffff\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c6\1\uffff\1\u00c5",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00ce\1\u00cd",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\15\131\1\u00d7\14\131",
+            "\1\u00d9\14\uffff\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00eb\7\uffff\1\u00ea",
+            "\1\u00ec",
+            "\1\u00ef\3\uffff\1\u00ed\17\uffff\1\u00f0\3\uffff\1\u00ee",
+            "\1\u00f2\7\uffff\1\u00f1",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6\1\uffff\1\u00f8\3\uffff\1\u00f7",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f9",
+            "\1\u00fa",
+            "",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
+            "\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1"+
+            "\u00a5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0102\20\uffff\1\u0101",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010c\4\uffff\1\u010b",
+            "\1\u010d",
+            "\1\u010e\12\uffff\1\u010f",
+            "\1\u0110",
+            "",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117\6\uffff\1\u0118",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011e\1\uffff\1\u011d",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0128\3\uffff\1\u0127",
+            "\1\u0129",
+            "",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u012f",
+            "",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u013b",
+            "\1\u013c\10\uffff\1\u013d",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "",
+            "",
+            "\1\u014b",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u0161",
+            "\1\u0162\12\uffff\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\1\u0170\31\131",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "",
+            "\1\u017c",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "",
+            "\1\u0186",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0188",
+            "",
+            "\1\u0189",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0194",
+            "\1\u0195\16\uffff\1\u0196",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\131\10\uffff\1\u019b\2\uffff\12\131\7\uffff\32\131\4\uffff"+
+            "\1\131\1\uffff\32\131",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\131\10\uffff\1\u01ae\2\uffff\12\131\7\uffff\32\131\4\uffff"+
+            "\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01b1",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01b4",
+            "\1\u01b5",
+            "\1\u01b6",
+            "",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u01ba",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01c4",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "",
+            "\1\u01ca",
+            "\1\u01cb",
+            "",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01d8",
+            "",
+            "\1\u01d9\21\uffff\1\u01da",
+            "",
+            "\1\u01db",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\10\uffff\1\u01e3\2\uffff\12\131\7\uffff\32\131\4\uffff"+
+            "\1\131\1\uffff\32\131",
+            "\1\u01e5",
+            "\1\u01e6",
+            "",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01ea",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01ec\21\uffff\1\u01ed",
+            "",
+            "",
+            "\1\u01ee",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01f0",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u01f2",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u01f4",
+            "",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0205",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u0207",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u020a",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u020c",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "\1\u020e",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0210",
+            "",
+            "\1\u0211",
+            "\1\u0212",
+            "",
+            "",
+            "",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0216",
+            "",
+            "\1\131\10\uffff\1\u0217\2\uffff\12\131\7\uffff\32\131\4\uffff"+
+            "\1\131\1\uffff\32\131",
+            "",
+            "",
+            "",
+            "\1\u0219",
+            "",
+            "\1\u021a",
+            "",
+            "\1\u021b",
+            "",
+            "\1\u021c",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u021e",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0222",
+            "",
+            "",
+            "\1\u0223",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u022a",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "\1\u022c",
+            "",
+            "\1\u022d",
+            "",
+            "\1\u022e",
+            "",
+            "\1\u022f",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\u0232",
+            "\1\u0233",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u0239",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "",
+            "\1\u023f",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u0242",
+            "\1\u0243",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "\1\u0248",
+            "\1\u0249",
+            "",
+            "\1\u024a",
+            "",
+            "",
+            "\1\u024b",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\u024d",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "\1\u024f",
+            "\1\u0250",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u0254",
+            "\1\u0255",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\u0257",
+            "",
+            "\1\u0258",
+            "\1\u0259",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff"+
+            "\32\131",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | 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=='o') ) {s = 19;}
+
+                        else if ( (LA21_0=='n') ) {s = 20;}
+
+                        else if ( (LA21_0=='w') ) {s = 21;}
+
+                        else if ( (LA21_0=='c') ) {s = 22;}
+
+                        else if ( (LA21_0=='l') ) {s = 23;}
+
+                        else if ( (LA21_0=='d') ) {s = 24;}
+
+                        else if ( (LA21_0=='p') ) {s = 25;}
+
+                        else if ( (LA21_0=='{') ) {s = 26;}
+
+                        else if ( (LA21_0=='}') ) {s = 27;}
+
+                        else if ( (LA21_0=='a') ) {s = 28;}
+
+                        else if ( (LA21_0=='u') ) {s = 29;}
+
+                        else if ( (LA21_0=='b') ) {s = 30;}
+
+                        else if ( (LA21_0=='g') ) {s = 31;}
+
+                        else if ( (LA21_0=='m') ) {s = 32;}
+
+                        else if ( (LA21_0=='t') ) {s = 33;}
+
+                        else if ( (LA21_0=='r') ) {s = 34;}
+
+                        else if ( (LA21_0=='@') ) {s = 35;}
+
+                        else if ( (LA21_0=='(') ) {s = 36;}
+
+                        else if ( (LA21_0==')') ) {s = 37;}
+
+                        else if ( (LA21_0==',') ) {s = 38;}
+
+                        else if ( (LA21_0==']') ) {s = 39;}
+
+                        else if ( (LA21_0=='#') ) {s = 40;}
+
+                        else if ( (LA21_0=='[') ) {s = 41;}
+
+                        else if ( (LA21_0==';') ) {s = 42;}
+
+                        else if ( (LA21_0==':') ) {s = 43;}
+
+                        else if ( (LA21_0=='z') ) {s = 44;}
+
+                        else if ( (LA21_0=='h') ) {s = 45;}
+
+                        else if ( (LA21_0=='0') ) {s = 46;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 47;}
+
+                        else if ( (LA21_0=='^') ) {s = 48;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||(LA21_0>='j' && LA21_0<='k')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='y')) ) {s = 49;}
+
+                        else if ( (LA21_0=='\"') ) {s = 50;}
+
+                        else if ( (LA21_0=='\'') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 52;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 53;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSLParser.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSLParser.java
new file mode 100644
index 0000000..4806c84
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSLParser.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.services.ChartDSLGrammarAccess;
+
+
+
+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 InternalChartDSLParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'inside'", "'inside-grid'", "'outside'", "'outside-grid'", "'normal'", "'slow'", "'fast'", "'north'", "'north-east'", "'east'", "'south-east'", "'south'", "'south-west'", "'west'", "'north-west'", "'category'", "'linear'", "'date'", "'logarithmic'", "'pyramid'", "'package'", "'{'", "'}'", "'chart'", "'as'", "'using'", "'bar'", "'line'", "'pie'", "'donut'", "'bubble'", "'gauge'", "'minimum'", "'maximum'", "'tree'", "'up to'", "'datamart'", "'legend'", "'tooltip'", "'axis'", "'renders'", "'tickangle'", "'segmentcolor'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'described by'", "'polling'", "'shaded'", "'animated'", "'swapped'", "'stacked'", "'showMarker'", "'trendLine'", "'cursor'", "'zoom'", "'fillZero'", "'filled'", "'empty'", "'multiplier'", "'gradient'", "'transparent'", "'label'", "'hasTicks'", "'intervals'", "'map'", "'collapsible'", "'toggle'", "'replot'", "'always'", "'shortLabel'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=5;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=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__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__152=152;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalChartDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalChartDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalChartDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g"; }
+
+
+     
+     	private ChartDSLGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleChartModel"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:61:1: entryRuleChartModel : ruleChartModel EOF ;
+    public final void entryRuleChartModel() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:62:1: ( ruleChartModel EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:63:1: ruleChartModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartModel_in_entryRuleChartModel67);
+            ruleChartModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartModel74); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartModel"
+
+
+    // $ANTLR start "ruleChartModel"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:70:1: ruleChartModel : ( ( rule__ChartModel__PackagesAssignment )* ) ;
+    public final void ruleChartModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:74:2: ( ( ( rule__ChartModel__PackagesAssignment )* ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:75:1: ( ( rule__ChartModel__PackagesAssignment )* )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:75:1: ( ( rule__ChartModel__PackagesAssignment )* )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:76:1: ( rule__ChartModel__PackagesAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelAccess().getPackagesAssignment()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:77:1: ( rule__ChartModel__PackagesAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==71) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:77:2: rule__ChartModel__PackagesAssignment
+            	    {
+            	    pushFollow(FOLLOW_rule__ChartModel__PackagesAssignment_in_ruleChartModel100);
+            	    rule__ChartModel__PackagesAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelAccess().getPackagesAssignment()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartModel"
+
+
+    // $ANTLR start "entryRuleChartPackage"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:89:1: entryRuleChartPackage : ruleChartPackage EOF ;
+    public final void entryRuleChartPackage() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:90:1: ( ruleChartPackage EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:91:1: ruleChartPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartPackage_in_entryRuleChartPackage128);
+            ruleChartPackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartPackage135); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartPackage"
+
+
+    // $ANTLR start "ruleChartPackage"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:98:1: ruleChartPackage : ( ( rule__ChartPackage__Group__0 ) ) ;
+    public final void ruleChartPackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:102:2: ( ( ( rule__ChartPackage__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:103:1: ( ( rule__ChartPackage__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:103:1: ( ( rule__ChartPackage__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:104:1: ( rule__ChartPackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:105:1: ( rule__ChartPackage__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:105:2: rule__ChartPackage__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartPackage__Group__0_in_ruleChartPackage161);
+            rule__ChartPackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartPackage"
+
+
+    // $ANTLR start "entryRuleChart"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:117:1: entryRuleChart : ruleChart EOF ;
+    public final void entryRuleChart() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:118:1: ( ruleChart EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:119:1: ruleChart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartRule()); 
+            }
+            pushFollow(FOLLOW_ruleChart_in_entryRuleChart188);
+            ruleChart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChart195); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChart"
+
+
+    // $ANTLR start "ruleChart"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:126:1: ruleChart : ( ( rule__Chart__Group__0 ) ) ;
+    public final void ruleChart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:130:2: ( ( ( rule__Chart__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:131:1: ( ( rule__Chart__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:131:1: ( ( rule__Chart__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:132:1: ( rule__Chart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:133:1: ( rule__Chart__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:133:2: rule__Chart__Group__0
+            {
+            pushFollow(FOLLOW_rule__Chart__Group__0_in_ruleChart221);
+            rule__Chart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChart"
+
+
+    // $ANTLR start "entryRuleChartOption"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:145:1: entryRuleChartOption : ruleChartOption EOF ;
+    public final void entryRuleChartOption() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:146:1: ( ruleChartOption EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:147:1: ruleChartOption EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartOptionRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartOption_in_entryRuleChartOption248);
+            ruleChartOption();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartOptionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartOption255); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartOption"
+
+
+    // $ANTLR start "ruleChartOption"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:154:1: ruleChartOption : ( ( rule__ChartOption__Alternatives ) ) ;
+    public final void ruleChartOption() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:158:2: ( ( ( rule__ChartOption__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:159:1: ( ( rule__ChartOption__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:159:1: ( ( rule__ChartOption__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:160:1: ( rule__ChartOption__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartOptionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:161:1: ( rule__ChartOption__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:161:2: rule__ChartOption__Alternatives
+            {
+            pushFollow(FOLLOW_rule__ChartOption__Alternatives_in_ruleChartOption281);
+            rule__ChartOption__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartOptionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartOption"
+
+
+    // $ANTLR start "entryRuleChartBar"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:173:1: entryRuleChartBar : ruleChartBar EOF ;
+    public final void entryRuleChartBar() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:174:1: ( ruleChartBar EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:175:1: ruleChartBar EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartBar_in_entryRuleChartBar308);
+            ruleChartBar();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartBar315); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartBar"
+
+
+    // $ANTLR start "ruleChartBar"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:182:1: ruleChartBar : ( ( rule__ChartBar__Group__0 ) ) ;
+    public final void ruleChartBar() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:186:2: ( ( ( rule__ChartBar__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:187:1: ( ( rule__ChartBar__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:187:1: ( ( rule__ChartBar__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:188:1: ( rule__ChartBar__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:189:1: ( rule__ChartBar__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:189:2: rule__ChartBar__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartBar__Group__0_in_ruleChartBar341);
+            rule__ChartBar__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartBar"
+
+
+    // $ANTLR start "entryRuleChartLine"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:201:1: entryRuleChartLine : ruleChartLine EOF ;
+    public final void entryRuleChartLine() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:202:1: ( ruleChartLine EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:203:1: ruleChartLine EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartLine_in_entryRuleChartLine368);
+            ruleChartLine();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartLine375); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartLine"
+
+
+    // $ANTLR start "ruleChartLine"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:210:1: ruleChartLine : ( ( rule__ChartLine__Group__0 ) ) ;
+    public final void ruleChartLine() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:214:2: ( ( ( rule__ChartLine__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:215:1: ( ( rule__ChartLine__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:215:1: ( ( rule__ChartLine__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:216:1: ( rule__ChartLine__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:217:1: ( rule__ChartLine__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:217:2: rule__ChartLine__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartLine__Group__0_in_ruleChartLine401);
+            rule__ChartLine__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartLine"
+
+
+    // $ANTLR start "entryRuleChartPie"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:229:1: entryRuleChartPie : ruleChartPie EOF ;
+    public final void entryRuleChartPie() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:230:1: ( ruleChartPie EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:231:1: ruleChartPie EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartPie_in_entryRuleChartPie428);
+            ruleChartPie();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartPie435); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartPie"
+
+
+    // $ANTLR start "ruleChartPie"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:238:1: ruleChartPie : ( ( rule__ChartPie__Group__0 ) ) ;
+    public final void ruleChartPie() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:242:2: ( ( ( rule__ChartPie__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:243:1: ( ( rule__ChartPie__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:243:1: ( ( rule__ChartPie__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:244:1: ( rule__ChartPie__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:245:1: ( rule__ChartPie__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:245:2: rule__ChartPie__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartPie__Group__0_in_ruleChartPie461);
+            rule__ChartPie__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartPie"
+
+
+    // $ANTLR start "entryRuleChartDonut"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:257:1: entryRuleChartDonut : ruleChartDonut EOF ;
+    public final void entryRuleChartDonut() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:258:1: ( ruleChartDonut EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:259:1: ruleChartDonut EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDonutRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartDonut_in_entryRuleChartDonut488);
+            ruleChartDonut();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDonutRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartDonut495); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartDonut"
+
+
+    // $ANTLR start "ruleChartDonut"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:266:1: ruleChartDonut : ( ( rule__ChartDonut__Group__0 ) ) ;
+    public final void ruleChartDonut() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:270:2: ( ( ( rule__ChartDonut__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:271:1: ( ( rule__ChartDonut__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:271:1: ( ( rule__ChartDonut__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:272:1: ( rule__ChartDonut__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDonutAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:273:1: ( rule__ChartDonut__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:273:2: rule__ChartDonut__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartDonut__Group__0_in_ruleChartDonut521);
+            rule__ChartDonut__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDonutAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartDonut"
+
+
+    // $ANTLR start "entryRuleChartBubble"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:285:1: entryRuleChartBubble : ruleChartBubble EOF ;
+    public final void entryRuleChartBubble() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:286:1: ( ruleChartBubble EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:287:1: ruleChartBubble EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartBubble_in_entryRuleChartBubble548);
+            ruleChartBubble();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartBubble555); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartBubble"
+
+
+    // $ANTLR start "ruleChartBubble"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:294:1: ruleChartBubble : ( ( rule__ChartBubble__Group__0 ) ) ;
+    public final void ruleChartBubble() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:298:2: ( ( ( rule__ChartBubble__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:299:1: ( ( rule__ChartBubble__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:299:1: ( ( rule__ChartBubble__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:300:1: ( rule__ChartBubble__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:301:1: ( rule__ChartBubble__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:301:2: rule__ChartBubble__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartBubble__Group__0_in_ruleChartBubble581);
+            rule__ChartBubble__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartBubble"
+
+
+    // $ANTLR start "entryRuleChartGauge"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:313:1: entryRuleChartGauge : ruleChartGauge EOF ;
+    public final void entryRuleChartGauge() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:314:1: ( ruleChartGauge EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:315:1: ruleChartGauge EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartGauge_in_entryRuleChartGauge608);
+            ruleChartGauge();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartGauge615); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartGauge"
+
+
+    // $ANTLR start "ruleChartGauge"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:322:1: ruleChartGauge : ( ( rule__ChartGauge__Group__0 ) ) ;
+    public final void ruleChartGauge() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:326:2: ( ( ( rule__ChartGauge__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:327:1: ( ( rule__ChartGauge__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:327:1: ( ( rule__ChartGauge__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:328:1: ( rule__ChartGauge__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:329:1: ( rule__ChartGauge__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:329:2: rule__ChartGauge__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartGauge__Group__0_in_ruleChartGauge641);
+            rule__ChartGauge__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartGauge"
+
+
+    // $ANTLR start "entryRuleChartTree"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:341:1: entryRuleChartTree : ruleChartTree EOF ;
+    public final void entryRuleChartTree() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:342:1: ( ruleChartTree EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:343:1: ruleChartTree EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartTree_in_entryRuleChartTree668);
+            ruleChartTree();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartTree675); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartTree"
+
+
+    // $ANTLR start "ruleChartTree"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:350:1: ruleChartTree : ( ( rule__ChartTree__Group__0 ) ) ;
+    public final void ruleChartTree() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:354:2: ( ( ( rule__ChartTree__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:355:1: ( ( rule__ChartTree__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:355:1: ( ( rule__ChartTree__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:356:1: ( rule__ChartTree__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:357:1: ( rule__ChartTree__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:357:2: rule__ChartTree__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartTree__Group__0_in_ruleChartTree701);
+            rule__ChartTree__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartTree"
+
+
+    // $ANTLR start "entryRuleChartInterval"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:369:1: entryRuleChartInterval : ruleChartInterval EOF ;
+    public final void entryRuleChartInterval() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:370:1: ( ruleChartInterval EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:371:1: ruleChartInterval EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartIntervalRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartInterval_in_entryRuleChartInterval728);
+            ruleChartInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartIntervalRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartInterval735); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartInterval"
+
+
+    // $ANTLR start "ruleChartInterval"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:378:1: ruleChartInterval : ( ruleChartNumberInterval ) ;
+    public final void ruleChartInterval() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:382:2: ( ( ruleChartNumberInterval ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:383:1: ( ruleChartNumberInterval )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:383:1: ( ruleChartNumberInterval )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:384:1: ruleChartNumberInterval
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_ruleChartNumberInterval_in_ruleChartInterval761);
+            ruleChartNumberInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartInterval"
+
+
+    // $ANTLR start "entryRuleChartNumberInterval"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:397:1: entryRuleChartNumberInterval : ruleChartNumberInterval EOF ;
+    public final void entryRuleChartNumberInterval() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:398:1: ( ruleChartNumberInterval EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:399:1: ruleChartNumberInterval EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartNumberInterval_in_entryRuleChartNumberInterval787);
+            ruleChartNumberInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartNumberInterval794); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartNumberInterval"
+
+
+    // $ANTLR start "ruleChartNumberInterval"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:406:1: ruleChartNumberInterval : ( ( rule__ChartNumberInterval__Group__0 ) ) ;
+    public final void ruleChartNumberInterval() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:410:2: ( ( ( rule__ChartNumberInterval__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:411:1: ( ( rule__ChartNumberInterval__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:411:1: ( ( rule__ChartNumberInterval__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:412:1: ( rule__ChartNumberInterval__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:413:1: ( rule__ChartNumberInterval__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:413:2: rule__ChartNumberInterval__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartNumberInterval__Group__0_in_ruleChartNumberInterval820);
+            rule__ChartNumberInterval__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartNumberInterval"
+
+
+    // $ANTLR start "entryRuleChartDatamart"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:425:1: entryRuleChartDatamart : ruleChartDatamart EOF ;
+    public final void entryRuleChartDatamart() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:426:1: ( ruleChartDatamart EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:427:1: ruleChartDatamart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartDatamart_in_entryRuleChartDatamart847);
+            ruleChartDatamart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartDatamart854); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartDatamart"
+
+
+    // $ANTLR start "ruleChartDatamart"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:434:1: ruleChartDatamart : ( ( rule__ChartDatamart__Group__0 ) ) ;
+    public final void ruleChartDatamart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:438:2: ( ( ( rule__ChartDatamart__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:439:1: ( ( rule__ChartDatamart__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:439:1: ( ( rule__ChartDatamart__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:440:1: ( rule__ChartDatamart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:441:1: ( rule__ChartDatamart__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:441:2: rule__ChartDatamart__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartDatamart__Group__0_in_ruleChartDatamart880);
+            rule__ChartDatamart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartDatamart"
+
+
+    // $ANTLR start "entryRuleChartElement"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:453:1: entryRuleChartElement : ruleChartElement EOF ;
+    public final void entryRuleChartElement() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:454:1: ( ruleChartElement EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:455:1: ruleChartElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartElement_in_entryRuleChartElement907);
+            ruleChartElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartElementRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartElement914); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartElement"
+
+
+    // $ANTLR start "ruleChartElement"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:462:1: ruleChartElement : ( ( rule__ChartElement__Alternatives ) ) ;
+    public final void ruleChartElement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:466:2: ( ( ( rule__ChartElement__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:467:1: ( ( rule__ChartElement__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:467:1: ( ( rule__ChartElement__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:468:1: ( rule__ChartElement__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartElementAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:469:1: ( rule__ChartElement__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:469:2: rule__ChartElement__Alternatives
+            {
+            pushFollow(FOLLOW_rule__ChartElement__Alternatives_in_ruleChartElement940);
+            rule__ChartElement__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartElementAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartElement"
+
+
+    // $ANTLR start "entryRuleChartLegend"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:481:1: entryRuleChartLegend : ruleChartLegend EOF ;
+    public final void entryRuleChartLegend() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:482:1: ( ruleChartLegend EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:483:1: ruleChartLegend EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartLegend_in_entryRuleChartLegend967);
+            ruleChartLegend();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartLegend974); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartLegend"
+
+
+    // $ANTLR start "ruleChartLegend"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:490:1: ruleChartLegend : ( ( rule__ChartLegend__Group__0 ) ) ;
+    public final void ruleChartLegend() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:494:2: ( ( ( rule__ChartLegend__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:495:1: ( ( rule__ChartLegend__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:495:1: ( ( rule__ChartLegend__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:496:1: ( rule__ChartLegend__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:497:1: ( rule__ChartLegend__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:497:2: rule__ChartLegend__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartLegend__Group__0_in_ruleChartLegend1000);
+            rule__ChartLegend__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartLegend"
+
+
+    // $ANTLR start "entryRuleChartHighlighter"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:509:1: entryRuleChartHighlighter : ruleChartHighlighter EOF ;
+    public final void entryRuleChartHighlighter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:510:1: ( ruleChartHighlighter EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:511:1: ruleChartHighlighter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartHighlighter_in_entryRuleChartHighlighter1027);
+            ruleChartHighlighter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartHighlighter1034); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartHighlighter"
+
+
+    // $ANTLR start "ruleChartHighlighter"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:518:1: ruleChartHighlighter : ( ( rule__ChartHighlighter__Group__0 ) ) ;
+    public final void ruleChartHighlighter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:522:2: ( ( ( rule__ChartHighlighter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:523:1: ( ( rule__ChartHighlighter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:523:1: ( ( rule__ChartHighlighter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:524:1: ( rule__ChartHighlighter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:525:1: ( rule__ChartHighlighter__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:525:2: rule__ChartHighlighter__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartHighlighter__Group__0_in_ruleChartHighlighter1060);
+            rule__ChartHighlighter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartHighlighter"
+
+
+    // $ANTLR start "entryRuleChartAxis"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:537:1: entryRuleChartAxis : ruleChartAxis EOF ;
+    public final void entryRuleChartAxis() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:538:1: ( ruleChartAxis EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:539:1: ruleChartAxis EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartAxis_in_entryRuleChartAxis1087);
+            ruleChartAxis();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartAxis1094); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartAxis"
+
+
+    // $ANTLR start "ruleChartAxis"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:546:1: ruleChartAxis : ( ( rule__ChartAxis__Group__0 ) ) ;
+    public final void ruleChartAxis() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:550:2: ( ( ( rule__ChartAxis__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:551:1: ( ( rule__ChartAxis__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:551:1: ( ( rule__ChartAxis__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:552:1: ( rule__ChartAxis__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:553:1: ( rule__ChartAxis__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:553:2: rule__ChartAxis__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartAxis__Group__0_in_ruleChartAxis1120);
+            rule__ChartAxis__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartAxis"
+
+
+    // $ANTLR start "entryRuleChartRangeElement"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:565:1: entryRuleChartRangeElement : ruleChartRangeElement EOF ;
+    public final void entryRuleChartRangeElement() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:566:1: ( ruleChartRangeElement EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:567:1: ruleChartRangeElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartRangeElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartRangeElement_in_entryRuleChartRangeElement1147);
+            ruleChartRangeElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartRangeElementRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartRangeElement1154); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartRangeElement"
+
+
+    // $ANTLR start "ruleChartRangeElement"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:574:1: ruleChartRangeElement : ( ruleChartSegmentColor ) ;
+    public final void ruleChartRangeElement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:578:2: ( ( ruleChartSegmentColor ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:579:1: ( ruleChartSegmentColor )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:579:1: ( ruleChartSegmentColor )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:580:1: ruleChartSegmentColor
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_ruleChartSegmentColor_in_ruleChartRangeElement1180);
+            ruleChartSegmentColor();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartRangeElement"
+
+
+    // $ANTLR start "entryRuleChartSegmentColor"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:593:1: entryRuleChartSegmentColor : ruleChartSegmentColor EOF ;
+    public final void entryRuleChartSegmentColor() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:594:1: ( ruleChartSegmentColor EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:595:1: ruleChartSegmentColor EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartSegmentColor_in_entryRuleChartSegmentColor1206);
+            ruleChartSegmentColor();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartSegmentColor1213); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartSegmentColor"
+
+
+    // $ANTLR start "ruleChartSegmentColor"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:602:1: ruleChartSegmentColor : ( ( rule__ChartSegmentColor__Group__0 ) ) ;
+    public final void ruleChartSegmentColor() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:606:2: ( ( ( rule__ChartSegmentColor__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:607:1: ( ( rule__ChartSegmentColor__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:607:1: ( ( rule__ChartSegmentColor__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:608:1: ( rule__ChartSegmentColor__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:609:1: ( rule__ChartSegmentColor__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:609:2: rule__ChartSegmentColor__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartSegmentColor__Group__0_in_ruleChartSegmentColor1239);
+            rule__ChartSegmentColor__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartSegmentColor"
+
+
+    // $ANTLR start "entryRuleChartImport"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:621:1: entryRuleChartImport : ruleChartImport EOF ;
+    public final void entryRuleChartImport() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:622:1: ( ruleChartImport EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:623:1: ruleChartImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartImport_in_entryRuleChartImport1266);
+            ruleChartImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartImportRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartImport1273); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartImport"
+
+
+    // $ANTLR start "ruleChartImport"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:630:1: ruleChartImport : ( ( rule__ChartImport__Group__0 ) ) ;
+    public final void ruleChartImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:634:2: ( ( ( rule__ChartImport__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:635:1: ( ( rule__ChartImport__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:635:1: ( ( rule__ChartImport__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:636:1: ( rule__ChartImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:637:1: ( rule__ChartImport__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:637:2: rule__ChartImport__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartImport__Group__0_in_ruleChartImport1299);
+            rule__ChartImport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartImportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartImport"
+
+
+    // $ANTLR start "entryRuleSignedNumber"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:649:1: entryRuleSignedNumber : ruleSignedNumber EOF ;
+    public final void entryRuleSignedNumber() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:650:1: ( ruleSignedNumber EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:651:1: ruleSignedNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignedNumberRule()); 
+            }
+            pushFollow(FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber1326);
+            ruleSignedNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignedNumberRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleSignedNumber1333); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSignedNumber"
+
+
+    // $ANTLR start "ruleSignedNumber"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:658:1: ruleSignedNumber : ( ( rule__SignedNumber__Group__0 )? ) ;
+    public final void ruleSignedNumber() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:662:2: ( ( ( rule__SignedNumber__Group__0 )? ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:663:1: ( ( rule__SignedNumber__Group__0 )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:663:1: ( ( rule__SignedNumber__Group__0 )? )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:664:1: ( rule__SignedNumber__Group__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignedNumberAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:665:1: ( rule__SignedNumber__Group__0 )?
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==RULE_INT||LA2_0==35) ) {
+                alt2=1;
+            }
+            switch (alt2) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:665:2: rule__SignedNumber__Group__0
+                    {
+                    pushFollow(FOLLOW_rule__SignedNumber__Group__0_in_ruleSignedNumber1359);
+                    rule__SignedNumber__Group__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignedNumberAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSignedNumber"
+
+
+    // $ANTLR start "entryRuleChartQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:677:1: entryRuleChartQualifiedNameWithWildCard : ruleChartQualifiedNameWithWildCard EOF ;
+    public final void entryRuleChartQualifiedNameWithWildCard() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:678:1: ( ruleChartQualifiedNameWithWildCard EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:679:1: ruleChartQualifiedNameWithWildCard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartQualifiedNameWithWildCardRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartQualifiedNameWithWildCard_in_entryRuleChartQualifiedNameWithWildCard1387);
+            ruleChartQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartQualifiedNameWithWildCardRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartQualifiedNameWithWildCard1394); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "ruleChartQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:686:1: ruleChartQualifiedNameWithWildCard : ( ( rule__ChartQualifiedNameWithWildCard__Group__0 ) ) ;
+    public final void ruleChartQualifiedNameWithWildCard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:690:2: ( ( ( rule__ChartQualifiedNameWithWildCard__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:691:1: ( ( rule__ChartQualifiedNameWithWildCard__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:691:1: ( ( rule__ChartQualifiedNameWithWildCard__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:692:1: ( rule__ChartQualifiedNameWithWildCard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:693:1: ( rule__ChartQualifiedNameWithWildCard__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:693:2: rule__ChartQualifiedNameWithWildCard__Group__0
+            {
+            pushFollow(FOLLOW_rule__ChartQualifiedNameWithWildCard__Group__0_in_ruleChartQualifiedNameWithWildCard1420);
+            rule__ChartQualifiedNameWithWildCard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartQualifiedNameWithWildCardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:705:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:706:1: ( ruleTRANSLATABLESTRING EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:707:1: ruleTRANSLATABLESTRING EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING1447);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING1454); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "ruleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:714:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    public final void ruleTRANSLATABLESTRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:718:2: ( ( RULE_STRING ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:719:1: ( RULE_STRING )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:719:1: ( RULE_STRING )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:720:1: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING1480); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:733:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    public final void entryRuleTRANSLATABLEID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:734:1: ( ruleTRANSLATABLEID EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:735:1: ruleTRANSLATABLEID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID1506);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID1513); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLEID"
+
+
+    // $ANTLR start "ruleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:742:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    public final void ruleTRANSLATABLEID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:746:2: ( ( RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:747:1: ( RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:747:1: ( RULE_ID )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:748:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID1539); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLEID"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:761:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:762:1: ( ruleXAnnotation EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:763:1: ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation1565);
+            ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation1572); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotation"
+
+
+    // $ANTLR start "ruleXAnnotation"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:770:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:774:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:775:1: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:775:1: ( ( rule__XAnnotation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:776:1: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:777:1: ( rule__XAnnotation__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:777:2: rule__XAnnotation__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation1598);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:789:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:790:1: ( ruleXAnnotationElementValuePair EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:791:1: ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair1625);
+            ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair1632); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:798:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:802:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:803:1: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:803:1: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:804:1: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:805:1: ( rule__XAnnotationElementValuePair__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:805:2: rule__XAnnotationElementValuePair__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair1658);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:817:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:818:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:819:1: ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList1685);
+            ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList1692); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:826:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:830:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:831:1: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:831:1: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:832:1: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:833:1: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:833:2: rule__XAnnotationElementValueOrCommaList__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList1718);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:845:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:846:1: ( ruleXAnnotationElementValue EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:847:1: ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue1745);
+            ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue1752); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:854:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:858:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:859:1: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:859:1: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:860:1: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:861:1: ( rule__XAnnotationElementValue__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:861:2: rule__XAnnotationElementValue__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue1778);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:873:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:874:1: ( ruleXAnnotationOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:875:1: ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression1805);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression1812); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationOrExpression"
+
+
+    // $ANTLR start "ruleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:882:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:886:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:887:1: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:887:1: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:888:1: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:889:1: ( rule__XAnnotationOrExpression__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:889:2: rule__XAnnotationOrExpression__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression1838);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:901:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:902:1: ( ruleXExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:903:1: ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression1865);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression1872); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpression"
+
+
+    // $ANTLR start "ruleXExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:910:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:914:2: ( ( ruleXAssignment ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:915:1: ( ruleXAssignment )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:915:1: ( ruleXAssignment )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:916:1: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression1898);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:929:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:930:1: ( ruleXAssignment EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:931:1: ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment1924);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment1931); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAssignment"
+
+
+    // $ANTLR start "ruleXAssignment"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:938:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:942:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:943:1: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:943:1: ( ( rule__XAssignment__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:944:1: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:945:1: ( rule__XAssignment__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:945:2: rule__XAssignment__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment1957);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:957:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:958:1: ( ruleOpSingleAssign EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:959:1: ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign1984);
+            ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign1991); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:966:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:970:2: ( ( '=' ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:971:1: ( '=' )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:971:1: ( '=' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:972:1: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+            match(input,13,FOLLOW_13_in_ruleOpSingleAssign2018); 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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:987:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:988:1: ( ruleOpMultiAssign EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:989:1: ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign2046);
+            ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign2053); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:996:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1000:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1001:1: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1001:1: ( ( rule__OpMultiAssign__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1002:1: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1003:1: ( rule__OpMultiAssign__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1003:2: rule__OpMultiAssign__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign2079);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1015:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1016:1: ( ruleXOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1017:1: ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression2106);
+            ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression2113); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOrExpression"
+
+
+    // $ANTLR start "ruleXOrExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1024:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1028:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1029:1: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1029:1: ( ( rule__XOrExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1030:1: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1031:1: ( rule__XOrExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1031:2: rule__XOrExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression2139);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1043:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1044:1: ( ruleOpOr EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1045:1: ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr2166);
+            ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr2173); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1052:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1056:2: ( ( '||' ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1057:1: ( '||' )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1057:1: ( '||' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1058:1: '||'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+            match(input,14,FOLLOW_14_in_ruleOpOr2200); 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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1073:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1074:1: ( ruleXAndExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1075:1: ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression2228);
+            ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression2235); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1082:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1086:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1087:1: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1087:1: ( ( rule__XAndExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1088:1: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1089:1: ( rule__XAndExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1089:2: rule__XAndExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression2261);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1101:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1102:1: ( ruleOpAnd EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1103:1: ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd2288);
+            ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd2295); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1110:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1114:2: ( ( '&&' ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1115:1: ( '&&' )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1115:1: ( '&&' )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1116:1: '&&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+            match(input,15,FOLLOW_15_in_ruleOpAnd2322); 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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1131:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1132:1: ( ruleXEqualityExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1133:1: ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression2350);
+            ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression2357); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1140:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1144:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1145:1: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1145:1: ( ( rule__XEqualityExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1146:1: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1147:1: ( rule__XEqualityExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1147:2: rule__XEqualityExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression2383);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1159:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1160:1: ( ruleOpEquality EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1161:1: ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality2410);
+            ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality2417); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1168:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1172:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1173:1: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1173:1: ( ( rule__OpEquality__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1174:1: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1175:1: ( rule__OpEquality__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1175:2: rule__OpEquality__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality2443);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1187:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1188:1: ( ruleXRelationalExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1189:1: ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression2470);
+            ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression2477); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1196:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1200:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1201:1: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1201:1: ( ( rule__XRelationalExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1202:1: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1203:1: ( rule__XRelationalExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1203:2: rule__XRelationalExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression2503);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1215:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1216:1: ( ruleOpCompare EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1217:1: ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare2530);
+            ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare2537); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1224:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1228:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1229:1: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1229:1: ( ( rule__OpCompare__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1230:1: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1231:1: ( rule__OpCompare__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1231:2: rule__OpCompare__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare2563);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1243:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1244:1: ( ruleXOtherOperatorExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1245:1: ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression2590);
+            ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression2597); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1252:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1256:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1257:1: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1257:1: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1258:1: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1259:1: ( rule__XOtherOperatorExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1259:2: rule__XOtherOperatorExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression2623);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1271:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1272:1: ( ruleOpOther EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1273:1: ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther2650);
+            ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther2657); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOther"
+
+
+    // $ANTLR start "ruleOpOther"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1280:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1284:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1285:1: ( ( rule__OpOther__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1285:1: ( ( rule__OpOther__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1286:1: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1287:1: ( rule__OpOther__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1287:2: rule__OpOther__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther2683);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1299:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1300:1: ( ruleXAdditiveExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1301:1: ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression2710);
+            ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression2717); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1308:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1312:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1313:1: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1313:1: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1314:1: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1315:1: ( rule__XAdditiveExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1315:2: rule__XAdditiveExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression2743);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1327:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1328:1: ( ruleOpAdd EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1329:1: ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd2770);
+            ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd2777); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1336:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1340:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1341:1: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1341:1: ( ( rule__OpAdd__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1342:1: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1343:1: ( rule__OpAdd__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1343:2: rule__OpAdd__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd2803);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1355:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1356:1: ( ruleXMultiplicativeExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1357:1: ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression2830);
+            ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression2837); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1364:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1368:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1369:1: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1369:1: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1370:1: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1371:1: ( rule__XMultiplicativeExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1371:2: rule__XMultiplicativeExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression2863);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1383:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1384:1: ( ruleOpMulti EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1385:1: ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti2890);
+            ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti2897); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1392:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1396:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1397:1: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1397:1: ( ( rule__OpMulti__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1398:1: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1399:1: ( rule__OpMulti__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1399:2: rule__OpMulti__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti2923);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1411:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1412:1: ( ruleXUnaryOperation EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1413:1: ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation2950);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation2957); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1420:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1424:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1425:1: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1425:1: ( ( rule__XUnaryOperation__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1426:1: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1427:1: ( rule__XUnaryOperation__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1427:2: rule__XUnaryOperation__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation2983);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1439:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1440:1: ( ruleOpUnary EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1441:1: ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary3010);
+            ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary3017); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1448:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1452:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1453:1: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1453:1: ( ( rule__OpUnary__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1454:1: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1455:1: ( rule__OpUnary__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1455:2: rule__OpUnary__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary3043);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1467:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1468:1: ( ruleXCastedExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1469:1: ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression3070);
+            ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression3077); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1476:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1480:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1481:1: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1481:1: ( ( rule__XCastedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1482:1: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1483:1: ( rule__XCastedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1483:2: rule__XCastedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression3103);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1495:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1496:1: ( ruleXPostfixOperation EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1497:1: ruleXPostfixOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation3130);
+            ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPostfixOperation3137); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPostfixOperation"
+
+
+    // $ANTLR start "ruleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1504:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1508:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1509:1: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1509:1: ( ( rule__XPostfixOperation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1510:1: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1511:1: ( rule__XPostfixOperation__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1511:2: rule__XPostfixOperation__Group__0
+            {
+            pushFollow(FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation3163);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1523:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1524:1: ( ruleOpPostfix EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1525:1: ruleOpPostfix EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix3190);
+            ruleOpPostfix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpPostfix3197); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpPostfix"
+
+
+    // $ANTLR start "ruleOpPostfix"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1532:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1536:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1537:1: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1537:1: ( ( rule__OpPostfix__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1538:1: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1539:1: ( rule__OpPostfix__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1539:2: rule__OpPostfix__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix3223);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1551:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1552:1: ( ruleXMemberFeatureCall EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1553:1: ruleXMemberFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall3250);
+            ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall3257); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMemberFeatureCall"
+
+
+    // $ANTLR start "ruleXMemberFeatureCall"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1560:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1564:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1565:1: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1565:1: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1566:1: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1567:1: ( rule__XMemberFeatureCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1567:2: rule__XMemberFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall3283);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1579:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1580:1: ( ruleXPrimaryExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1581:1: ruleXPrimaryExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression3310);
+            ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPrimaryExpression3317); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPrimaryExpression"
+
+
+    // $ANTLR start "ruleXPrimaryExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1588:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1592:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1593:1: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1593:1: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1594:1: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1595:1: ( rule__XPrimaryExpression__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1595:2: rule__XPrimaryExpression__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression3343);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1607:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1608:1: ( ruleXLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1609:1: ruleXLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral3370);
+            ruleXLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral3377); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXLiteral"
+
+
+    // $ANTLR start "ruleXLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1616:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1620:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1621:1: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1621:1: ( ( rule__XLiteral__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1622:1: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1623:1: ( rule__XLiteral__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1623:2: rule__XLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral3403);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1635:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1636:1: ( ruleXCollectionLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1637:1: ruleXCollectionLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral3430);
+            ruleXCollectionLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCollectionLiteral3437); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCollectionLiteral"
+
+
+    // $ANTLR start "ruleXCollectionLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1644:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1648:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1649:1: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1649:1: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1650:1: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1651:1: ( rule__XCollectionLiteral__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1651:2: rule__XCollectionLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral3463);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1663:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1664:1: ( ruleXSetLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1665:1: ruleXSetLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral3490);
+            ruleXSetLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSetLiteral3497); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSetLiteral"
+
+
+    // $ANTLR start "ruleXSetLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1672:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1676:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1677:1: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1677:1: ( ( rule__XSetLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1678:1: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1679:1: ( rule__XSetLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1679:2: rule__XSetLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral3523);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1691:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1692:1: ( ruleXListLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1693:1: ruleXListLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral3550);
+            ruleXListLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXListLiteral3557); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXListLiteral"
+
+
+    // $ANTLR start "ruleXListLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1700:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1704:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1705:1: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1705:1: ( ( rule__XListLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1706:1: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1707:1: ( rule__XListLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1707:2: rule__XListLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral3583);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1719:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1720:1: ( ruleXClosure EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1721:1: ruleXClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXClosure_in_entryRuleXClosure3610);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXClosure3617); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXClosure"
+
+
+    // $ANTLR start "ruleXClosure"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1728:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1732:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1733:1: ( ( rule__XClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1733:1: ( ( rule__XClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1734:1: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1735:1: ( rule__XClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1735:2: rule__XClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XClosure__Group__0_in_ruleXClosure3643);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1747:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1748:1: ( ruleXExpressionInClosure EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1749:1: ruleXExpressionInClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure3670);
+            ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInClosure3677); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionInClosure"
+
+
+    // $ANTLR start "ruleXExpressionInClosure"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1756:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1760:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1761:1: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1761:1: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1762:1: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1763:1: ( rule__XExpressionInClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1763:2: rule__XExpressionInClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure3703);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1775:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1776:1: ( ruleXShortClosure EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1777:1: ruleXShortClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure3730);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXShortClosure3737); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXShortClosure"
+
+
+    // $ANTLR start "ruleXShortClosure"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1784:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1788:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1789:1: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1789:1: ( ( rule__XShortClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1790:1: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1791:1: ( rule__XShortClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1791:2: rule__XShortClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure3763);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1803:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1804:1: ( ruleXParenthesizedExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1805:1: ruleXParenthesizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression3790);
+            ruleXParenthesizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression3797); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXParenthesizedExpression"
+
+
+    // $ANTLR start "ruleXParenthesizedExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1812:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1816:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1817:1: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1817:1: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1818:1: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1819:1: ( rule__XParenthesizedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1819:2: rule__XParenthesizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression3823);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1831:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1832:1: ( ruleXIfExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1833:1: ruleXIfExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression3850);
+            ruleXIfExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression3857); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXIfExpression"
+
+
+    // $ANTLR start "ruleXIfExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1840:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1844:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1845:1: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1845:1: ( ( rule__XIfExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1846:1: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1847:1: ( rule__XIfExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1847:2: rule__XIfExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression3883);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1859:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1860:1: ( ruleXSwitchExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1861:1: ruleXSwitchExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression3910);
+            ruleXSwitchExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSwitchExpression3917); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSwitchExpression"
+
+
+    // $ANTLR start "ruleXSwitchExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1868:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1872:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1873:1: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1873:1: ( ( rule__XSwitchExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1874:1: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1875:1: ( rule__XSwitchExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1875:2: rule__XSwitchExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression3943);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1887:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1888:1: ( ruleXCasePart EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1889:1: ruleXCasePart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCasePart_in_entryRuleXCasePart3970);
+            ruleXCasePart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCasePart3977); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCasePart"
+
+
+    // $ANTLR start "ruleXCasePart"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1896:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1900:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1901:1: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1901:1: ( ( rule__XCasePart__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1902:1: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1903:1: ( rule__XCasePart__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1903:2: rule__XCasePart__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart4003);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1915:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1916:1: ( ruleXForLoopExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1917:1: ruleXForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression4030);
+            ruleXForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXForLoopExpression4037); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXForLoopExpression"
+
+
+    // $ANTLR start "ruleXForLoopExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1924:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1928:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1929:1: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1929:1: ( ( rule__XForLoopExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1930:1: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1931:1: ( rule__XForLoopExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1931:2: rule__XForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression4063);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1943:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1944:1: ( ruleXBasicForLoopExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1945:1: ruleXBasicForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression4090);
+            ruleXBasicForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBasicForLoopExpression4097); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBasicForLoopExpression"
+
+
+    // $ANTLR start "ruleXBasicForLoopExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1952:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1956:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1957:1: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1957:1: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1958:1: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1959:1: ( rule__XBasicForLoopExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1959:2: rule__XBasicForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression4123);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1971:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1972:1: ( ruleXWhileExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1973:1: ruleXWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression4150);
+            ruleXWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression4157); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXWhileExpression"
+
+
+    // $ANTLR start "ruleXWhileExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1980:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1984:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1985:1: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1985:1: ( ( rule__XWhileExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1986:1: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1987:1: ( rule__XWhileExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1987:2: rule__XWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression4183);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:1999:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2000:1: ( ruleXDoWhileExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2001:1: ruleXDoWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression4210);
+            ruleXDoWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXDoWhileExpression4217); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXDoWhileExpression"
+
+
+    // $ANTLR start "ruleXDoWhileExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2008:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2012:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2013:1: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2013:1: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2014:1: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2015:1: ( rule__XDoWhileExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2015:2: rule__XDoWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression4243);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2027:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2028:1: ( ruleXBlockExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2029:1: ruleXBlockExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression4270);
+            ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression4277); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBlockExpression"
+
+
+    // $ANTLR start "ruleXBlockExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2036:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2040:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2041:1: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2041:1: ( ( rule__XBlockExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2042:1: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2043:1: ( rule__XBlockExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2043:2: rule__XBlockExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression4303);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2055:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2056:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2057:1: ruleXExpressionOrVarDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration4330);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration4337); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "ruleXExpressionOrVarDeclaration"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2064:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2068:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2069:1: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2069:1: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2070:1: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2071:1: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2071:2: rule__XExpressionOrVarDeclaration__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration4363);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2083:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2084:1: ( ruleXVariableDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2085:1: ruleXVariableDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration4390);
+            ruleXVariableDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration4397); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXVariableDeclaration"
+
+
+    // $ANTLR start "ruleXVariableDeclaration"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2092:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2096:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2097:1: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2097:1: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2098:1: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2099:1: ( rule__XVariableDeclaration__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2099:2: rule__XVariableDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration4423);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2111:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2112:1: ( ruleJvmFormalParameter EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2113:1: ruleJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter4450);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmFormalParameter4457); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmFormalParameter"
+
+
+    // $ANTLR start "ruleJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2120:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2124:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2125:1: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2125:1: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2126:1: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2127:1: ( rule__JvmFormalParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2127:2: rule__JvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter4483);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2139:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2140:1: ( ruleFullJvmFormalParameter EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2141:1: ruleFullJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter4510);
+            ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFullJvmFormalParameter4517); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFullJvmFormalParameter"
+
+
+    // $ANTLR start "ruleFullJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2148:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2152:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2153:1: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2153:1: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2154:1: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2155:1: ( rule__FullJvmFormalParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2155:2: rule__FullJvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter4543);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2167:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2168:1: ( ruleXFeatureCall EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2169:1: ruleXFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall4570);
+            ruleXFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall4577); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFeatureCall"
+
+
+    // $ANTLR start "ruleXFeatureCall"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2176:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2180:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2181:1: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2181:1: ( ( rule__XFeatureCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2182:1: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2183:1: ( rule__XFeatureCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2183:2: rule__XFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall4603);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2195:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2196:1: ( ruleFeatureCallID EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2197:1: ruleFeatureCallID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID4630);
+            ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFeatureCallID4637); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFeatureCallID"
+
+
+    // $ANTLR start "ruleFeatureCallID"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2204:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2208:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2209:1: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2209:1: ( ( rule__FeatureCallID__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2210:1: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2211:1: ( rule__FeatureCallID__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2211:2: rule__FeatureCallID__Alternatives
+            {
+            pushFollow(FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID4663);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2223:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2224:1: ( ruleIdOrSuper EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2225:1: ruleIdOrSuper EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperRule()); 
+            }
+            pushFollow(FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper4690);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleIdOrSuper4697); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIdOrSuper"
+
+
+    // $ANTLR start "ruleIdOrSuper"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2232:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2236:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2237:1: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2237:1: ( ( rule__IdOrSuper__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2238:1: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2239:1: ( rule__IdOrSuper__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2239:2: rule__IdOrSuper__Alternatives
+            {
+            pushFollow(FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper4723);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2251:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2252:1: ( ruleXConstructorCall EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2253:1: ruleXConstructorCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall4750);
+            ruleXConstructorCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructorCall4757); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXConstructorCall"
+
+
+    // $ANTLR start "ruleXConstructorCall"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2260:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2264:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2265:1: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2265:1: ( ( rule__XConstructorCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2266:1: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2267:1: ( rule__XConstructorCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2267:2: rule__XConstructorCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall4783);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2279:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2280:1: ( ruleXBooleanLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2281:1: ruleXBooleanLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral4810);
+            ruleXBooleanLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBooleanLiteral4817); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBooleanLiteral"
+
+
+    // $ANTLR start "ruleXBooleanLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2288:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2292:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2293:1: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2293:1: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2294:1: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2295:1: ( rule__XBooleanLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2295:2: rule__XBooleanLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral4843);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2307:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2308:1: ( ruleXNullLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2309:1: ruleXNullLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral4870);
+            ruleXNullLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral4877); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNullLiteral"
+
+
+    // $ANTLR start "ruleXNullLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2316:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2320:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2321:1: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2321:1: ( ( rule__XNullLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2322:1: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2323:1: ( rule__XNullLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2323:2: rule__XNullLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral4903);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2335:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2336:1: ( ruleXNumberLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2337:1: ruleXNumberLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral4930);
+            ruleXNumberLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXNumberLiteral4937); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNumberLiteral"
+
+
+    // $ANTLR start "ruleXNumberLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2344:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2348:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2349:1: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2349:1: ( ( rule__XNumberLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2350:1: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2351:1: ( rule__XNumberLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2351:2: rule__XNumberLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral4963);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2363:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2364:1: ( ruleXStringLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2365:1: ruleXStringLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral4990);
+            ruleXStringLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral4997); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXStringLiteral"
+
+
+    // $ANTLR start "ruleXStringLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2372:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2376:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2377:1: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2377:1: ( ( rule__XStringLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2378:1: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2379:1: ( rule__XStringLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2379:2: rule__XStringLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral5023);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2391:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2392:1: ( ruleXTypeLiteral EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2393:1: ruleXTypeLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral5050);
+            ruleXTypeLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXTypeLiteral5057); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTypeLiteral"
+
+
+    // $ANTLR start "ruleXTypeLiteral"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2400:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2404:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2405:1: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2405:1: ( ( rule__XTypeLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2406:1: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2407:1: ( rule__XTypeLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2407:2: rule__XTypeLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral5083);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2419:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2420:1: ( ruleXThrowExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2421:1: ruleXThrowExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression5110);
+            ruleXThrowExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXThrowExpression5117); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXThrowExpression"
+
+
+    // $ANTLR start "ruleXThrowExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2428:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2432:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2433:1: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2433:1: ( ( rule__XThrowExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2434:1: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2435:1: ( rule__XThrowExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2435:2: rule__XThrowExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression5143);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2447:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2448:1: ( ruleXReturnExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2449:1: ruleXReturnExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression5170);
+            ruleXReturnExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnExpression5177); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXReturnExpression"
+
+
+    // $ANTLR start "ruleXReturnExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2456:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2460:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2461:1: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2461:1: ( ( rule__XReturnExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2462:1: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2463:1: ( rule__XReturnExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2463:2: rule__XReturnExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression5203);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2475:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2476:1: ( ruleXTryCatchFinallyExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2477:1: ruleXTryCatchFinallyExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression5230);
+            ruleXTryCatchFinallyExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression5237); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "ruleXTryCatchFinallyExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2484:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2488:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2489:1: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2489:1: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2490:1: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2491:1: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2491:2: rule__XTryCatchFinallyExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression5263);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2503:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2504:1: ( ruleXSynchronizedExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2505:1: ruleXSynchronizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression5290);
+            ruleXSynchronizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSynchronizedExpression5297); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSynchronizedExpression"
+
+
+    // $ANTLR start "ruleXSynchronizedExpression"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2512:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2516:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2517:1: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2517:1: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2518:1: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2519:1: ( rule__XSynchronizedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2519:2: rule__XSynchronizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression5323);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2531:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2532:1: ( ruleXCatchClause EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2533:1: ruleXCatchClause EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause5350);
+            ruleXCatchClause();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCatchClause5357); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCatchClause"
+
+
+    // $ANTLR start "ruleXCatchClause"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2540:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2544:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2545:1: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2545:1: ( ( rule__XCatchClause__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2546:1: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2547:1: ( rule__XCatchClause__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2547:2: rule__XCatchClause__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause5383);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2559:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2560:1: ( ruleQualifiedName EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2561:1: ruleQualifiedName EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName5410);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName5417); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedName"
+
+
+    // $ANTLR start "ruleQualifiedName"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2568:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2572:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2573:1: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2573:1: ( ( rule__QualifiedName__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2574:1: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2575:1: ( rule__QualifiedName__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2575:2: rule__QualifiedName__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName5443);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2587:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2591:1: ( ruleNumber EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2592:1: ruleNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberRule()); 
+            }
+            pushFollow(FOLLOW_ruleNumber_in_entryRuleNumber5475);
+            ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleNumber5482); 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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2602:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2607:2: ( ( ( rule__Number__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2608:1: ( ( rule__Number__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2608:1: ( ( rule__Number__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2609:1: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2610:1: ( rule__Number__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2610:2: rule__Number__Alternatives
+            {
+            pushFollow(FOLLOW_rule__Number__Alternatives_in_ruleNumber5512);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2625:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2626:1: ( ruleJvmTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2627:1: ruleJvmTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference5541);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmTypeReference5548); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmTypeReference"
+
+
+    // $ANTLR start "ruleJvmTypeReference"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2634:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2638:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2639:1: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2639:1: ( ( rule__JvmTypeReference__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2640:1: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2641:1: ( rule__JvmTypeReference__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2641:2: rule__JvmTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference5574);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2653:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2654:1: ( ruleArrayBrackets EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2655:1: ruleArrayBrackets EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsRule()); 
+            }
+            pushFollow(FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets5601);
+            ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayBrackets5608); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleArrayBrackets"
+
+
+    // $ANTLR start "ruleArrayBrackets"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2662:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2666:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2667:1: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2667:1: ( ( rule__ArrayBrackets__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2668:1: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2669:1: ( rule__ArrayBrackets__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2669:2: rule__ArrayBrackets__Group__0
+            {
+            pushFollow(FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets5634);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2681:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2682:1: ( ruleXFunctionTypeRef EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2683:1: ruleXFunctionTypeRef EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            pushFollow(FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef5661);
+            ruleXFunctionTypeRef();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionTypeRef5668); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFunctionTypeRef"
+
+
+    // $ANTLR start "ruleXFunctionTypeRef"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2690:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2694:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2695:1: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2695:1: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2696:1: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2697:1: ( rule__XFunctionTypeRef__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2697:2: rule__XFunctionTypeRef__Group__0
+            {
+            pushFollow(FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef5694);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2709:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2710:1: ( ruleJvmParameterizedTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2711:1: ruleJvmParameterizedTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference5721);
+            ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference5728); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "ruleJvmParameterizedTypeReference"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2718:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2722:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2723:1: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2723:1: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2724:1: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2725:1: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2725:2: rule__JvmParameterizedTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference5754);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2737:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2738:1: ( ruleJvmArgumentTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2739:1: ruleJvmArgumentTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference5781);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference5788); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "ruleJvmArgumentTypeReference"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2746:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2750:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2751:1: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2751:1: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2752:1: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2753:1: ( rule__JvmArgumentTypeReference__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2753:2: rule__JvmArgumentTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference5814);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2765:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2766:1: ( ruleJvmWildcardTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2767:1: ruleJvmWildcardTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference5841);
+            ruleJvmWildcardTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference5848); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "ruleJvmWildcardTypeReference"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2774:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2778:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2779:1: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2779:1: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2780:1: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2781:1: ( rule__JvmWildcardTypeReference__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2781:2: rule__JvmWildcardTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference5874);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2793:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2794:1: ( ruleJvmUpperBound EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2795:1: ruleJvmUpperBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound5901);
+            ruleJvmUpperBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBound5908); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBound"
+
+
+    // $ANTLR start "ruleJvmUpperBound"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2802:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2806:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2807:1: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2807:1: ( ( rule__JvmUpperBound__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2808:1: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2809:1: ( rule__JvmUpperBound__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2809:2: rule__JvmUpperBound__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound5934);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2821:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2822:1: ( ruleJvmUpperBoundAnded EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2823:1: ruleJvmUpperBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded5961);
+            ruleJvmUpperBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded5968); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "ruleJvmUpperBoundAnded"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2830:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2834:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2835:1: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2835:1: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2836:1: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2837:1: ( rule__JvmUpperBoundAnded__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2837:2: rule__JvmUpperBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded5994);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2849:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2850:1: ( ruleJvmLowerBound EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2851:1: ruleJvmLowerBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound6021);
+            ruleJvmLowerBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBound6028); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBound"
+
+
+    // $ANTLR start "ruleJvmLowerBound"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2858:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2862:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2863:1: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2863:1: ( ( rule__JvmLowerBound__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2864:1: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2865:1: ( rule__JvmLowerBound__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2865:2: rule__JvmLowerBound__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound6054);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2877:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2878:1: ( ruleJvmLowerBoundAnded EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2879:1: ruleJvmLowerBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded6081);
+            ruleJvmLowerBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded6088); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "ruleJvmLowerBoundAnded"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2886:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2890:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2891:1: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2891:1: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2892:1: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2893:1: ( rule__JvmLowerBoundAnded__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2893:2: rule__JvmLowerBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded6114);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2907:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2908:1: ( ruleQualifiedNameWithWildcard EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2909:1: ruleQualifiedNameWithWildcard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard6143);
+            ruleQualifiedNameWithWildcard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard6150); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "ruleQualifiedNameWithWildcard"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2916:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2920:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2921:1: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2921:1: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2922:1: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2923:1: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2923:2: rule__QualifiedNameWithWildcard__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard6176);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2935:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2936:1: ( ruleValidID EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2937:1: ruleValidID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID6203);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID6210); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleValidID"
+
+
+    // $ANTLR start "ruleValidID"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2944:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2948:2: ( ( RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2949:1: ( RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2949:1: ( RULE_ID )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2950:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID6236); 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 "entryRuleXImportDeclaration"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2965:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2966:1: ( ruleXImportDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2967:1: ruleXImportDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration6264);
+            ruleXImportDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXImportDeclaration6271); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXImportDeclaration"
+
+
+    // $ANTLR start "ruleXImportDeclaration"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2974:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2978:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2979:1: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2979:1: ( ( rule__XImportDeclaration__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2980:1: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2981:1: ( rule__XImportDeclaration__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2981:2: rule__XImportDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration6297);
+            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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2993:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2994:1: ( ruleQualifiedNameInStaticImport EOF )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:2995:1: ruleQualifiedNameInStaticImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport6324);
+            ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport6331); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleQualifiedNameInStaticImport"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3002:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3006:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3007:1: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3007:1: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3008:1: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3008:1: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3009:1: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3010:1: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3010:2: rule__QualifiedNameInStaticImport__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport6359);
+            rule__QualifiedNameInStaticImport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3013:1: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3014:1: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3015:1: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0==RULE_ID) ) {
+                    int LA3_2 = input.LA(2);
+
+                    if ( (LA3_2==43) ) {
+                        alt3=1;
+                    }
+
+
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3015:2: rule__QualifiedNameInStaticImport__Group__0
+            	    {
+            	    pushFollow(FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport6371);
+            	    rule__QualifiedNameInStaticImport__Group__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } 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 "ruleLegendPlacementEnum"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3029:1: ruleLegendPlacementEnum : ( ( rule__LegendPlacementEnum__Alternatives ) ) ;
+    public final void ruleLegendPlacementEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3033:1: ( ( ( rule__LegendPlacementEnum__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3034:1: ( ( rule__LegendPlacementEnum__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3034:1: ( ( rule__LegendPlacementEnum__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3035:1: ( rule__LegendPlacementEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3036:1: ( rule__LegendPlacementEnum__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3036:2: rule__LegendPlacementEnum__Alternatives
+            {
+            pushFollow(FOLLOW_rule__LegendPlacementEnum__Alternatives_in_ruleLegendPlacementEnum6411);
+            rule__LegendPlacementEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLegendPlacementEnum"
+
+
+    // $ANTLR start "ruleToggleTypeEnum"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3048:1: ruleToggleTypeEnum : ( ( rule__ToggleTypeEnum__Alternatives ) ) ;
+    public final void ruleToggleTypeEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3052:1: ( ( ( rule__ToggleTypeEnum__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3053:1: ( ( rule__ToggleTypeEnum__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3053:1: ( ( rule__ToggleTypeEnum__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3054:1: ( rule__ToggleTypeEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3055:1: ( rule__ToggleTypeEnum__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3055:2: rule__ToggleTypeEnum__Alternatives
+            {
+            pushFollow(FOLLOW_rule__ToggleTypeEnum__Alternatives_in_ruleToggleTypeEnum6447);
+            rule__ToggleTypeEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleToggleTypeEnum"
+
+
+    // $ANTLR start "ruleTooltipLocationEnum"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3067:1: ruleTooltipLocationEnum : ( ( rule__TooltipLocationEnum__Alternatives ) ) ;
+    public final void ruleTooltipLocationEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3071:1: ( ( ( rule__TooltipLocationEnum__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3072:1: ( ( rule__TooltipLocationEnum__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3072:1: ( ( rule__TooltipLocationEnum__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3073:1: ( rule__TooltipLocationEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3074:1: ( rule__TooltipLocationEnum__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3074:2: rule__TooltipLocationEnum__Alternatives
+            {
+            pushFollow(FOLLOW_rule__TooltipLocationEnum__Alternatives_in_ruleTooltipLocationEnum6483);
+            rule__TooltipLocationEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTooltipLocationEnum"
+
+
+    // $ANTLR start "ruleRenderTypeEnum"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3086:1: ruleRenderTypeEnum : ( ( rule__RenderTypeEnum__Alternatives ) ) ;
+    public final void ruleRenderTypeEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3090:1: ( ( ( rule__RenderTypeEnum__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3091:1: ( ( rule__RenderTypeEnum__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3091:1: ( ( rule__RenderTypeEnum__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3092:1: ( rule__RenderTypeEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3093:1: ( rule__RenderTypeEnum__Alternatives )
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3093:2: rule__RenderTypeEnum__Alternatives
+            {
+            pushFollow(FOLLOW_rule__RenderTypeEnum__Alternatives_in_ruleRenderTypeEnum6519);
+            rule__RenderTypeEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRenderTypeEnum"
+
+
+    // $ANTLR start "rule__ChartOption__Alternatives"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3104:1: rule__ChartOption__Alternatives : ( ( ruleChartBar ) | ( ruleChartLine ) | ( ruleChartPie ) | ( ruleChartDonut ) | ( ruleChartBubble ) | ( ruleChartGauge ) | ( ruleChartTree ) );
+    public final void rule__ChartOption__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3108:1: ( ( ruleChartBar ) | ( ruleChartLine ) | ( ruleChartPie ) | ( ruleChartDonut ) | ( ruleChartBubble ) | ( ruleChartGauge ) | ( ruleChartTree ) )
+            int alt4=7;
+            switch ( input.LA(1) ) {
+            case 77:
+                {
+                alt4=1;
+                }
+                break;
+            case 78:
+                {
+                alt4=2;
+                }
+                break;
+            case 79:
+                {
+                alt4=3;
+                }
+                break;
+            case 80:
+                {
+                alt4=4;
+                }
+                break;
+            case 81:
+                {
+                alt4=5;
+                }
+                break;
+            case 82:
+                {
+                alt4=6;
+                }
+                break;
+            case 85:
+                {
+                alt4=7;
+                }
+                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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3109:1: ( ruleChartBar )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3109:1: ( ruleChartBar )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3110:1: ruleChartBar
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartBar_in_rule__ChartOption__Alternatives6554);
+                    ruleChartBar();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3115:6: ( ruleChartLine )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3115:6: ( ruleChartLine )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3116:1: ruleChartLine
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartLine_in_rule__ChartOption__Alternatives6571);
+                    ruleChartLine();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3121:6: ( ruleChartPie )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3121:6: ( ruleChartPie )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3122:1: ruleChartPie
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartPie_in_rule__ChartOption__Alternatives6588);
+                    ruleChartPie();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3127:6: ( ruleChartDonut )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3127:6: ( ruleChartDonut )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3128:1: ruleChartDonut
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartDonut_in_rule__ChartOption__Alternatives6605);
+                    ruleChartDonut();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3133:6: ( ruleChartBubble )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3133:6: ( ruleChartBubble )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3134:1: ruleChartBubble
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartBubble_in_rule__ChartOption__Alternatives6622);
+                    ruleChartBubble();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3139:6: ( ruleChartGauge )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3139:6: ( ruleChartGauge )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3140:1: ruleChartGauge
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartGauge_in_rule__ChartOption__Alternatives6639);
+                    ruleChartGauge();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3145:6: ( ruleChartTree )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3145:6: ( ruleChartTree )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3146:1: ruleChartTree
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartTree_in_rule__ChartOption__Alternatives6656);
+                    ruleChartTree();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartOption__Alternatives"
+
+
+    // $ANTLR start "rule__ChartBubble__Alternatives_2_1"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3156:1: rule__ChartBubble__Alternatives_2_1 : ( ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) ) | ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) ) );
+    public final void rule__ChartBubble__Alternatives_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3160:1: ( ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) ) | ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) ) )
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==137) ) {
+                alt5=1;
+            }
+            else if ( (LA5_0==138) ) {
+                alt5=2;
+            }
+            else {
+                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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3161:1: ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3161:1: ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3162:1: ( rule__ChartBubble__GradientAssignment_2_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3163:1: ( rule__ChartBubble__GradientAssignment_2_1_0 )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3163:2: rule__ChartBubble__GradientAssignment_2_1_0
+                    {
+                    pushFollow(FOLLOW_rule__ChartBubble__GradientAssignment_2_1_0_in_rule__ChartBubble__Alternatives_2_16688);
+                    rule__ChartBubble__GradientAssignment_2_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3167:6: ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3167:6: ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3168:1: ( rule__ChartBubble__TransparentAssignment_2_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3169:1: ( rule__ChartBubble__TransparentAssignment_2_1_1 )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3169:2: rule__ChartBubble__TransparentAssignment_2_1_1
+                    {
+                    pushFollow(FOLLOW_rule__ChartBubble__TransparentAssignment_2_1_1_in_rule__ChartBubble__Alternatives_2_16706);
+                    rule__ChartBubble__TransparentAssignment_2_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Alternatives_2_1"
+
+
+    // $ANTLR start "rule__ChartTree__Alternatives_2"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3178:1: rule__ChartTree__Alternatives_2 : ( ( ( rule__ChartTree__MapAssignment_2_0 ) ) | ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) ) );
+    public final void rule__ChartTree__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3182:1: ( ( ( rule__ChartTree__MapAssignment_2_0 ) ) | ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==142) ) {
+                alt6=1;
+            }
+            else if ( (LA6_0==143) ) {
+                alt6=2;
+            }
+            else {
+                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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3183:1: ( ( rule__ChartTree__MapAssignment_2_0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3183:1: ( ( rule__ChartTree__MapAssignment_2_0 ) )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3184:1: ( rule__ChartTree__MapAssignment_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3185:1: ( rule__ChartTree__MapAssignment_2_0 )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3185:2: rule__ChartTree__MapAssignment_2_0
+                    {
+                    pushFollow(FOLLOW_rule__ChartTree__MapAssignment_2_0_in_rule__ChartTree__Alternatives_26739);
+                    rule__ChartTree__MapAssignment_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3189:6: ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3189:6: ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3190:1: ( rule__ChartTree__CollapsibleAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3191:1: ( rule__ChartTree__CollapsibleAssignment_2_1 )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3191:2: rule__ChartTree__CollapsibleAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_rule__ChartTree__CollapsibleAssignment_2_1_in_rule__ChartTree__Alternatives_26757);
+                    rule__ChartTree__CollapsibleAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Alternatives_2"
+
+
+    // $ANTLR start "rule__ChartElement__Alternatives"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3200:1: rule__ChartElement__Alternatives : ( ( ruleChartAxis ) | ( ruleChartLegend ) | ( ruleChartHighlighter ) );
+    public final void rule__ChartElement__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3204:1: ( ( ruleChartAxis ) | ( ruleChartLegend ) | ( ruleChartHighlighter ) )
+            int alt7=3;
+            switch ( input.LA(1) ) {
+            case 90:
+                {
+                alt7=1;
+                }
+                break;
+            case 88:
+                {
+                alt7=2;
+                }
+                break;
+            case 89:
+                {
+                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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3205:1: ( ruleChartAxis )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3205:1: ( ruleChartAxis )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3206:1: ruleChartAxis
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartAxis_in_rule__ChartElement__Alternatives6790);
+                    ruleChartAxis();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3211:6: ( ruleChartLegend )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3211:6: ( ruleChartLegend )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3212:1: ruleChartLegend
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartLegend_in_rule__ChartElement__Alternatives6807);
+                    ruleChartLegend();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3217:6: ( ruleChartHighlighter )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3217:6: ( ruleChartHighlighter )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3218:1: ruleChartHighlighter
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_ruleChartHighlighter_in_rule__ChartElement__Alternatives6824);
+                    ruleChartHighlighter();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartElement__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
+    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3228: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3232: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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3233:1: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3233:1: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3234:1: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3235:1: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3235:2: rule__XAnnotation__Group_3_1_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_16856);
+                    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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3239:6: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3239:6: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3240:1: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3241:1: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // ../org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3241:2: rule__XAnnotation__ValueAssignment_3_1_1
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_16874);
+                    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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/antlr/internal/InternalChartDSL.g:3250: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 {
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/internal/ChartDSLActivator.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/internal/ChartDSLActivator.java
new file mode 100644
index 0000000..1acab28
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/internal/ChartDSLActivator.java
@@ -0,0 +1,105 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.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 ChartDSLActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL = "org.eclipse.osbp.xtext.chart.ChartDSL";
+	
+	private static final Logger logger = Logger.getLogger(ChartDSLActivator.class);
+	
+	private static ChartDSLActivator 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 ChartDSLActivator 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_CHART_CHARTDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.chart.ChartDSLRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.chart.ui.ChartDSLUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.java
new file mode 100644
index 0000000..77da719
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.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.chart.ui;
+
+import java.util.ResourceBundle;
+
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+
+public class ChartDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
+	 
+    private static ChartDSLDocumentationTranslator INSTANCE = new ChartDSLDocumentationTranslator();
+
+    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.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHover.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHover.java
new file mode 100644
index 0000000..ec6c4aa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHover.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.chart.ui;
+
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHover;
+
+public class ChartDSLEObjectHover extends BasicDSLEObjectHover {
+	
+	@Override
+	public IEObjectHoverProvider getHoverProvider() {
+		return ChartDSLEObjectHoverProvider.instance();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHoverDocumentationProvider.java
new file mode 100644
index 0000000..a32d85b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHoverDocumentationProvider.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.chart.ui;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider;
+
+public class ChartDSLEObjectHoverDocumentationProvider extends BasicDSLEObjectHoverDocumentationProvider {
+	 
+    private static ChartDSLEObjectHoverDocumentationProvider INSTANCE;
+
+    public static ChartDSLEObjectHoverDocumentationProvider instance() {
+        return INSTANCE;
+    }
+
+    public ChartDSLEObjectHoverDocumentationProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    @Override
+    protected BasicDSLDocumentationTranslator getTranslator() {
+        return ChartDSLDocumentationTranslator.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHoverProvider.java
new file mode 100644
index 0000000..1194af4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLEObjectHoverProvider.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.chart.ui;
+
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;
+
+public class ChartDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
+	 
+    private static ChartDSLEObjectHoverProvider INSTANCE;
+
+    public static ChartDSLEObjectHoverProvider instance() {
+        return INSTANCE;
+    }
+
+    public ChartDSLEObjectHoverProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    @Override
+    public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
+        return ChartDSLEObjectHoverDocumentationProvider.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.java
new file mode 100644
index 0000000..6724db0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.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.chart.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 ChartDSLUiModule extends org.eclipse.osbp.xtext.chart.ui.AbstractChartDSLUiModule {
+	
+	private static Logger LOGGER = LoggerFactory.getLogger(ChartDSLUiModule.class);
+	
+	public ChartDSLUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	    BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+	}
+	
+	@Override
+	public Class<? extends IEObjectHover> bindIEObjectHover() {
+	    return ChartDSLEObjectHover.class;
+	}
+	
+	@Override
+	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
+	    return ChartDSLEObjectHoverProvider.class;
+	}
+	
+	@Override
+	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+	     return ChartDSLEObjectHoverDocumentationProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend
new file mode 100644
index 0000000..13b138b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend
@@ -0,0 +1,162 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.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.chart.ChartAxis
+import org.eclipse.osbp.xtext.chart.RenderTypeEnum
+import org.eclipse.osbp.xtext.chart.ui.ChartDSLDocumentationTranslator
+import org.eclipse.swt.widgets.ColorDialog
+import org.eclipse.xtext.Assignment
+import org.eclipse.xtext.Keyword
+import org.eclipse.xtext.RuleCall
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor
+import org.eclipse.xtext.ui.editor.contentassist.ReplacementTextApplier
+
+class MyReplacementTextApplier extends ReplacementTextApplier {
+	var ContentAssistContext context
+
+	def setContext(ContentAssistContext context) {
+		this.context = context
+	}
+
+	// this will inject a color picker when selecting the color picker proposal	
+	override getActualReplacementString(ConfigurableCompletionProposal proposal) {
+		var display = context.getViewer().getTextWidget().getDisplay();
+		var colorDialog = new ColorDialog(display.getActiveShell());
+		var newColor = colorDialog.open();
+		return "\"".concat(newColor.red.toString).concat(",").concat(newColor.green.toString).concat(",").concat(
+			newColor.blue.toString).concat("\"");
+	}
+}
+
+class ChartDSLProposalProvider extends AbstractChartDSLProposalProvider {
+	@Inject TerminalsProposalProvider provider
+	@Inject BasicDSLProposalProviderHelper providerHelper
+
+	override protected StyledString getKeywordDisplayString(Keyword keyword) {
+		return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword,
+			ChartDSLDocumentationTranslator.instance())
+	}
+
+	/**
+	 * This override will enable 1 length non letter characters as keyword.
+	 */
+	override protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+		return true
+	}
+
+	override public void completeChartSegmentColor_Rgb(EObject model, Assignment assignment,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		colorPickerProposal(model, assignment, context, acceptor)
+	}
+
+	def colorPickerProposal(EObject model, Assignment assignment, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		var pickColor = createCompletionProposal("Pick color...", context) as ConfigurableCompletionProposal
+		if (pickColor != null) {
+			var applier = new MyReplacementTextApplier()
+			applier.setContext(context)
+			pickColor.setTextApplier = applier
+		}
+		acceptor.accept(pickColor)
+
+		// predefined colors
+		acceptor.accept(createCompletionProposal("\"230,128,64\" /* orange */", "orange", null, context));
+		acceptor.accept(createCompletionProposal("\"255,182,182\" /* light red */", "light red", null, context));
+		acceptor.accept(createCompletionProposal("\"255,0,0\" /* red */", "red", null, context));
+		acceptor.accept(createCompletionProposal("\"204,102,102\" /* dark red */", "dark red", null, context));
+		acceptor.accept(createCompletionProposal("\"255,255,128\" /*light yellow */", "light yellow", null, context));
+		acceptor.accept(createCompletionProposal("\"255,255,0\" /* yellow */", "yellow", null, context));
+		acceptor.accept(createCompletionProposal("\"128,128,0\" /* dark yellow */", "dark yellow", null, context));
+		acceptor.accept(createCompletionProposal("\"102,204,102\" /* light green */", "light green", null, context));
+		acceptor.accept(createCompletionProposal("\"0,255,0\" /* green */", "green", null, context));
+		acceptor.accept(createCompletionProposal("\"147,183,95\" /* dark green */", "dark green", null, context));
+		acceptor.accept(createCompletionProposal("\"0,0,0\" /* black */", "black", null, context));
+		acceptor.accept(createCompletionProposal("\"255,255,255\" /* white */", "white", null, context));
+	}
+
+	override protected isValidProposal(String proposal, String prefix, ContentAssistContext context) {
+		var result = super.isValidProposal(proposal, prefix, context)
+		if (context.getCurrentModel() instanceof ChartAxis) {
+
+			// do only allow shortlabels on a category axis
+			// ACTUALLY NOT USED! It´s use has to be reviewed! 
+			//			if ((context.getCurrentModel() as ChartAxis).renderType != RenderTypeEnum.CATEGORY) {
+			//				return false
+			//			}
+			return true
+		}
+		return result
+	}
+
+	override public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+	}
+
+	override public void complete_ChartQualifiedNameWithWildCard(EObject model, RuleCall ruleCall,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+	}
+
+	override public void completeChartAxis_Angle(EObject model, Assignment assignment, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		var ruleCall = (assignment.getTerminal() as RuleCall)
+		var feature = providerHelper.getAssignedFeature(ruleCall);
+		providerHelper.createIntProposal(context, acceptor, ruleCall, feature, 0, "value between -360 and 360", this)
+	}
+
+	override public void completeChartBubble_MultiplierValue(EObject model, Assignment assignment,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		providerHelper.createNumberProposal(context, acceptor, (assignment.terminal as RuleCall), this)
+	}
+
+	override public void completeChartNumberInterval_NumberIntervalValue(EObject model, Assignment assignment,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		provider.complete_INT(model, (assignment.terminal as RuleCall), context, acceptor)
+	}
+
+	// ------------------------ delegates to TerminalsProposalProvider -----------------
+	override public void complete_INT(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_INT(model, ruleCall, context, acceptor)
+	}
+
+	override public void complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor)
+	}
+
+	override public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, ruleCall, context, acceptor)
+	}
+
+	override public void completeChartGauge_LabelValue(EObject model, Assignment assignment,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, (assignment.getTerminal() as RuleCall), context, acceptor)
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..854b4fa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLDescriptionLabelProvider.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.chart.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 ChartDSLDescriptionLabelProvider extends org.eclipse.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.xtend
new file mode 100644
index 0000000..239951e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.xtend
@@ -0,0 +1,118 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.chart.ui.labeling
+
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider
+import org.eclipse.osbp.xtext.chart.Chart
+import org.eclipse.osbp.xtext.chart.ChartModel
+import org.eclipse.osbp.xtext.chart.ChartBar
+import org.eclipse.osbp.xtext.chart.ChartLine
+import org.eclipse.osbp.xtext.chart.ChartPie
+import org.eclipse.osbp.xtext.chart.ChartDonut
+import org.eclipse.osbp.xtext.chart.ChartBubble
+import org.eclipse.osbp.xtext.chart.ChartGauge
+import org.eclipse.osbp.xtext.chart.ChartTree
+import org.eclipse.osbp.xtext.chart.ChartInterval
+import org.eclipse.osbp.xtext.chart.ChartRangeElement
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor
+import org.eclipse.osbp.xtext.chart.ChartDatamart
+import org.eclipse.osbp.xtext.chart.ChartAxis
+import org.eclipse.osbp.xtext.chart.ChartLegend
+import org.eclipse.osbp.xtext.chart.ChartHighlighter
+import org.eclipse.osbp.xtext.chart.ChartOption
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class ChartDSLLabelProvider extends BasicDSLLabelProvider {
+
+	@Inject
+	new(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	/* ********************************************************************************************** */
+	/**			Provides outline text for Chart-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 150929, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	 override text ( Object o ) {
+		switch (o) {
+			Chart				:	generateText( o, 'chart'		, (o as Chart).name )
+			ChartBar			:	generateText( o, 'option bar'   )
+			ChartLine			:	generateText( o, 'option line'  )
+			ChartPie			:	generateText( o, 'option pie'   )
+			ChartDonut			:	generateText( o, 'option donut' )
+			ChartBubble			:	generateText( o, 'option bubble')
+			ChartGauge			:	generateText( o, 'option gauge' )
+			ChartTree			:	generateText( o, 'option tree'  )
+			ChartInterval		:	generateText( o, 'interval'     )
+			ChartSegmentColor	:	generateText( o, 'segment color', String.format( "RGB(%s)", (o as ChartSegmentColor).rgb ) )
+			ChartRangeElement	:	generateText( o, 'range element')
+			ChartDatamart		:	generateText( o, 'datamart'     , (o as ChartDatamart).datamartRef.name )
+			ChartAxis			:	generateText( o, 'axis'         )
+			ChartLegend			:	generateText( o, 'legend'       )
+			ChartHighlighter	:	generateText( o, 'tooltip'      )
+			default				:	super.text( o )
+		}
+	}
+
+	/* ********************************************************************************************** */
+	/**			Provides outline images for Chart-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 150929, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	override image ( Object o ) {
+		switch (o) {
+			ChartModel			:	getInternalImage( 'model.png', super.class)
+			Chart				:	getInternalImage( 'dsl_chart.png', class)
+			ChartSegmentColor	:	getColorOutlineImage( (o as ChartSegmentColor).rgb, true )
+			ChartOption			:	getInternalImage( 'dsl_option.png', class)
+			ChartInterval		:	getInternalImage( 'chart_interval.png', class)
+			ChartRangeElement	:	getInternalImage( 'dsl_range.png', class)
+			ChartDatamart		:	getInternalImage( 'dsl_datamart.png', class)
+			ChartAxis			:	getInternalImage( 'chart_axis.png', class)
+			ChartLegend			:	getInternalImage( 'chart_legend.png', class)
+			ChartHighlighter	:	getInternalImage( 'chart_tooltip.png', class)
+			default				:	super.image( o )
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/outline/ChartDSLOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/outline/ChartDSLOutlineTreeProvider.xtend
new file mode 100644
index 0000000..f9f25f1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/outline/ChartDSLOutlineTreeProvider.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.chart.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class ChartDSLOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.xtend
new file mode 100644
index 0000000..627c129
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.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.chart.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 ChartDSLQuickfixProvider 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.chart.ui/templates/ReadMe.txt b/org.eclipse.osbp.xtext.chart.ui/templates/ReadMe.txt
new file mode 100644
index 0000000..56207f8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/templates/ReadMe.txt
@@ -0,0 +1 @@
+place templates for designtime here
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java
new file mode 100644
index 0000000..16f0120
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.chart.ui.contentassist;
+
+import com.google.common.base.Objects;
+import com.google.inject.Inject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+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.chart.ChartAxis;
+import org.eclipse.osbp.xtext.chart.ui.ChartDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.chart.ui.contentassist.AbstractChartDSLProposalProvider;
+import org.eclipse.osbp.xtext.chart.ui.contentassist.MyReplacementTextApplier;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+
+@SuppressWarnings("all")
+public class ChartDSLProposalProvider extends AbstractChartDSLProposalProvider {
+  @Inject
+  private TerminalsProposalProvider provider;
+  
+  @Inject
+  private BasicDSLProposalProviderHelper providerHelper;
+  
+  protected StyledString getKeywordDisplayString(final Keyword keyword) {
+    BasicDSLDocumentationTranslator _instance = ChartDSLDocumentationTranslator.instance();
+    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance);
+  }
+  
+  /**
+   * This override will enable 1 length non letter characters as keyword.
+   */
+  protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
+    return true;
+  }
+  
+  public void completeChartSegmentColor_Rgb(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.colorPickerProposal(model, assignment, context, acceptor);
+  }
+  
+  public void colorPickerProposal(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    ICompletionProposal _createCompletionProposal = this.createCompletionProposal("Pick color...", context);
+    ConfigurableCompletionProposal pickColor = ((ConfigurableCompletionProposal) _createCompletionProposal);
+    boolean _notEquals = (!Objects.equal(pickColor, null));
+    if (_notEquals) {
+      MyReplacementTextApplier applier = new MyReplacementTextApplier();
+      applier.setContext(context);
+      pickColor.setTextApplier(applier);
+    }
+    acceptor.accept(pickColor);
+    ICompletionProposal _createCompletionProposal_1 = this.createCompletionProposal("\"230,128,64\" /* orange */", "orange", null, context);
+    acceptor.accept(_createCompletionProposal_1);
+    ICompletionProposal _createCompletionProposal_2 = this.createCompletionProposal("\"255,182,182\" /* light red */", "light red", null, context);
+    acceptor.accept(_createCompletionProposal_2);
+    ICompletionProposal _createCompletionProposal_3 = this.createCompletionProposal("\"255,0,0\" /* red */", "red", null, context);
+    acceptor.accept(_createCompletionProposal_3);
+    ICompletionProposal _createCompletionProposal_4 = this.createCompletionProposal("\"204,102,102\" /* dark red */", "dark red", null, context);
+    acceptor.accept(_createCompletionProposal_4);
+    ICompletionProposal _createCompletionProposal_5 = this.createCompletionProposal("\"255,255,128\" /*light yellow */", "light yellow", null, context);
+    acceptor.accept(_createCompletionProposal_5);
+    ICompletionProposal _createCompletionProposal_6 = this.createCompletionProposal("\"255,255,0\" /* yellow */", "yellow", null, context);
+    acceptor.accept(_createCompletionProposal_6);
+    ICompletionProposal _createCompletionProposal_7 = this.createCompletionProposal("\"128,128,0\" /* dark yellow */", "dark yellow", null, context);
+    acceptor.accept(_createCompletionProposal_7);
+    ICompletionProposal _createCompletionProposal_8 = this.createCompletionProposal("\"102,204,102\" /* light green */", "light green", null, context);
+    acceptor.accept(_createCompletionProposal_8);
+    ICompletionProposal _createCompletionProposal_9 = this.createCompletionProposal("\"0,255,0\" /* green */", "green", null, context);
+    acceptor.accept(_createCompletionProposal_9);
+    ICompletionProposal _createCompletionProposal_10 = this.createCompletionProposal("\"147,183,95\" /* dark green */", "dark green", null, context);
+    acceptor.accept(_createCompletionProposal_10);
+    ICompletionProposal _createCompletionProposal_11 = this.createCompletionProposal("\"0,0,0\" /* black */", "black", null, context);
+    acceptor.accept(_createCompletionProposal_11);
+    ICompletionProposal _createCompletionProposal_12 = this.createCompletionProposal("\"255,255,255\" /* white */", "white", null, context);
+    acceptor.accept(_createCompletionProposal_12);
+  }
+  
+  protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
+    boolean result = super.isValidProposal(proposal, prefix, context);
+    EObject _currentModel = context.getCurrentModel();
+    if ((_currentModel instanceof ChartAxis)) {
+      return true;
+    }
+    return result;
+  }
+  
+  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_ChartQualifiedNameWithWildCard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+  }
+  
+  public void completeChartAxis_Angle(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    AbstractElement _terminal = assignment.getTerminal();
+    RuleCall ruleCall = ((RuleCall) _terminal);
+    String feature = this.providerHelper.getAssignedFeature(ruleCall);
+    this.providerHelper.createIntProposal(context, acceptor, ruleCall, feature, 0, "value between -360 and 360", this);
+  }
+  
+  public void completeChartBubble_MultiplierValue(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    AbstractElement _terminal = assignment.getTerminal();
+    this.providerHelper.createNumberProposal(context, acceptor, ((RuleCall) _terminal), this);
+  }
+  
+  public void completeChartNumberInterval_NumberIntervalValue(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    AbstractElement _terminal = assignment.getTerminal();
+    this.provider.complete_INT(model, ((RuleCall) _terminal), context, acceptor);
+  }
+  
+  public void complete_INT(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_INT(model, ruleCall, context, acceptor);
+  }
+  
+  public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_ID(model, ruleCall, context, acceptor);
+  }
+  
+  public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_STRING(model, ruleCall, context, acceptor);
+  }
+  
+  public void completeChartGauge_LabelValue(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    AbstractElement _terminal = assignment.getTerminal();
+    this.provider.complete_STRING(model, ((RuleCall) _terminal), context, acceptor);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java
new file mode 100644
index 0000000..109359a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.chart.ui.contentassist;
+
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.ColorDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ReplacementTextApplier;
+
+@SuppressWarnings("all")
+public class MyReplacementTextApplier extends ReplacementTextApplier {
+  private ContentAssistContext context;
+  
+  public ContentAssistContext setContext(final ContentAssistContext context) {
+    return this.context = context;
+  }
+  
+  public String getActualReplacementString(final ConfigurableCompletionProposal proposal) {
+    ITextViewer _viewer = this.context.getViewer();
+    StyledText _textWidget = _viewer.getTextWidget();
+    Display display = _textWidget.getDisplay();
+    Shell _activeShell = display.getActiveShell();
+    ColorDialog colorDialog = new ColorDialog(_activeShell);
+    RGB newColor = colorDialog.open();
+    String _string = Integer.valueOf(newColor.red).toString();
+    String _concat = "\"".concat(_string);
+    String _concat_1 = _concat.concat(",");
+    String _string_1 = Integer.valueOf(newColor.green).toString();
+    String _concat_2 = _concat_1.concat(_string_1);
+    String _concat_3 = _concat_2.concat(",");
+    String _string_2 = Integer.valueOf(newColor.blue).toString();
+    String _concat_4 = _concat_3.concat(_string_2);
+    return _concat_4.concat("\"");
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLDescriptionLabelProvider.java
new file mode 100644
index 0000000..7bf6325
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLDescriptionLabelProvider.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.chart.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 ChartDSLDescriptionLabelProvider extends XbaseDescriptionLabelProvider {
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.java
new file mode 100644
index 0000000..950fd3d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.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
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartAxis;
+import org.eclipse.osbp.xtext.chart.ChartBar;
+import org.eclipse.osbp.xtext.chart.ChartBubble;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.chart.ChartDonut;
+import org.eclipse.osbp.xtext.chart.ChartGauge;
+import org.eclipse.osbp.xtext.chart.ChartHighlighter;
+import org.eclipse.osbp.xtext.chart.ChartInterval;
+import org.eclipse.osbp.xtext.chart.ChartLegend;
+import org.eclipse.osbp.xtext.chart.ChartLine;
+import org.eclipse.osbp.xtext.chart.ChartModel;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+import org.eclipse.osbp.xtext.chart.ChartPie;
+import org.eclipse.osbp.xtext.chart.ChartRangeElement;
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class ChartDSLLabelProvider extends BasicDSLLabelProvider {
+  @Inject
+  public ChartDSLLabelProvider(final AdapterFactoryLabelProvider delegate) {
+    super(delegate);
+  }
+  
+  public Object text(final Object o) {
+    Object _switchResult = null;
+    boolean _matched = false;
+    if (!_matched) {
+      if (o instanceof Chart) {
+        _matched=true;
+        String _name = ((Chart) o).getName();
+        _switchResult = this.generateText(o, "chart", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartBar) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option bar");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartLine) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option line");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartPie) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option pie");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartDonut) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option donut");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartBubble) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option bubble");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartGauge) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option gauge");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartTree) {
+        _matched=true;
+        _switchResult = this.generateText(o, "option tree");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartInterval) {
+        _matched=true;
+        _switchResult = this.generateText(o, "interval");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartSegmentColor) {
+        _matched=true;
+        String _rgb = ((ChartSegmentColor) o).getRgb();
+        String _format = String.format("RGB(%s)", _rgb);
+        _switchResult = this.generateText(o, "segment color", _format);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartRangeElement) {
+        _matched=true;
+        _switchResult = this.generateText(o, "range element");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartDatamart) {
+        _matched=true;
+        DatamartDefinition _datamartRef = ((ChartDatamart) o).getDatamartRef();
+        String _name = _datamartRef.getName();
+        _switchResult = this.generateText(o, "datamart", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartAxis) {
+        _matched=true;
+        _switchResult = this.generateText(o, "axis");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartLegend) {
+        _matched=true;
+        _switchResult = this.generateText(o, "legend");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartHighlighter) {
+        _matched=true;
+        _switchResult = this.generateText(o, "tooltip");
+      }
+    }
+    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 ChartModel) {
+        _matched=true;
+        Class<? extends BasicDSLLabelProvider> _class = super.getClass();
+        _switchResult = this.getInternalImage("model.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Chart) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("dsl_chart.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartSegmentColor) {
+        _matched=true;
+        String _rgb = ((ChartSegmentColor) o).getRgb();
+        _switchResult = this.getColorOutlineImage(_rgb, true);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartOption) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("dsl_option.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartInterval) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("chart_interval.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartRangeElement) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("dsl_range.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartDatamart) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("dsl_datamart.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartAxis) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("chart_axis.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartLegend) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("chart_legend.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ChartHighlighter) {
+        _matched=true;
+        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("chart_tooltip.png", _class);
+      }
+    }
+    if (!_matched) {
+      _switchResult = super.image(o);
+    }
+    return _switchResult;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/outline/ChartDSLOutlineTreeProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/outline/ChartDSLOutlineTreeProvider.java
new file mode 100644
index 0000000..84c4cbc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/outline/ChartDSLOutlineTreeProvider.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.chart.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 ChartDSLOutlineTreeProvider extends DefaultOutlineTreeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.java
new file mode 100644
index 0000000..9121f0c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.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.chart.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 ChartDSLQuickfixProvider extends XbaseWithAnnotationsQuickfixProvider {
+}
diff --git a/org.eclipse.osbp.xtext.chart/.project b/org.eclipse.osbp.xtext.chart/.project
new file mode 100644
index 0000000..52a5d86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart</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.chart/LICENSE.txt b/org.eclipse.osbp.xtext.chart/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5acd909
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/META-INF/MANIFEST.MF
@@ -0,0 +1,93 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.chart
+Bundle-Vendor: Eclipse OSBP
+ Germany)
+Bundle-Localization: plugin
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.xtext.chart;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.apache.xerces;bundle-version="2.9.0",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4",
+ org.eclipse.osgi.services;bundle-version="3.4.0",
+ org.eclipse.emf.codegen.ecore,
+ org.eclipse.emf.mwe.utils,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.common,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.osbp.xtext.authorizationdsl;visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore.lib,
+ org.eclipse.bpmn2;visibility:=reexport,
+ org.eclipse.osbp.dsl.dto.xtext;visibility:=reexport,
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ refresher.osgi;bundle-version="[1.2.3.7,1.2.4)",
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.ui.model.workbench,
+ olap4j.osgi;bundle-version="[1.1.0,1.3.0)",
+ org.eclipse.e4.core.services,
+ org.eclipse.emf.ecore.xcore,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)",
+ dCharts.osgi;bundle-version="1.7.0",
+ org.eclipse.core.databinding,
+ org.eclipse.e4.core.di;bundle-version="1.4.0",
+ org.eclipse.e4.core.di.extensions;bundle-version="0.12.0",
+ org.eclipse.core.databinding.beans,
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.xtext.functionlibrarydsl;visibility:=reexport,
+ org.eclipse.osbp.dsl.xtext.lazyresolver;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.osgi.hybrid.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.xtext.blip;visibility:=reexport,
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.xtext.basic;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.eventbroker;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamart.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.runtime;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.validation,
+ javax.validation.constraints,
+ org.apache.log4j,
+ org.eclipse.e4.core.di.extensions,
+ org.eclipse.osbp.ui.api.datamart;version="0.9.0",
+ org.eclipse.osbp.ui.api.layout;version="0.9.0",
+ org.eclipse.osbp.ui.api.metadata;version="0.9.0",
+ org.eclipse.osbp.ui.api.user;version="0.9.0",
+ org.osgi.service.event
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.chart;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.impl;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.util;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.formatting;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.jvmmodel;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.parser.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.parser.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.scoping;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.serializer;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.services;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.validation;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.valueconverter;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.chart.Activator
diff --git a/org.eclipse.osbp.xtext.chart/about.html b/org.eclipse.osbp.xtext.chart/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/about.ini b/org.eclipse.osbp.xtext.chart/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/about.mappings b/org.eclipse.osbp.xtext.chart/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/about.properties b/org.eclipse.osbp.xtext.chart/about.properties
new file mode 100644
index 0000000..e79d204
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart
+
+################ 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.chart/build.properties b/org.eclipse.osbp.xtext.chart/build.properties
new file mode 100644
index 0000000..f87b00a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/build.properties
@@ -0,0 +1,30 @@
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http{//www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors{  
+#  		Joerg Riegel - Initial implementation 
+#  
+
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+			   model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html			   
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/,\
+           emf-gen/
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java
new file mode 100644
index 0000000..8db6a66
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java
@@ -0,0 +1,195 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#isDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getDescriptionValue <em>Description Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#isPolling <em>Polling</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getPollingTime <em>Polling Time</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getCharttype <em>Charttype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart()
+ * @model
+ * @generated
+ */
+public interface Chart extends ChartBase {
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_Description()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#isDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #isDescription()
+	 * @generated
+	 */
+	void setDescription(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Description Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description Value</em>' attribute.
+	 * @see #setDescriptionValue(String)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_DescriptionValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getDescriptionValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#getDescriptionValue <em>Description Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description Value</em>' attribute.
+	 * @see #getDescriptionValue()
+	 * @generated
+	 */
+	void setDescriptionValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Polling</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Polling</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Polling</em>' attribute.
+	 * @see #setPolling(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_Polling()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isPolling();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#isPolling <em>Polling</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Polling</em>' attribute.
+	 * @see #isPolling()
+	 * @generated
+	 */
+	void setPolling(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Polling Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Polling Time</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Polling Time</em>' attribute.
+	 * @see #setPollingTime(int)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_PollingTime()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getPollingTime();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#getPollingTime <em>Polling Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Polling Time</em>' attribute.
+	 * @see #getPollingTime()
+	 * @generated
+	 */
+	void setPollingTime(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Charttype</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Charttype</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>Charttype</em>' containment reference.
+	 * @see #setCharttype(ChartOption)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_Charttype()
+	 * @model containment="true"
+	 * @generated
+	 */
+	ChartOption getCharttype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#getCharttype <em>Charttype</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Charttype</em>' containment reference.
+	 * @see #getCharttype()
+	 * @generated
+	 */
+	void setCharttype(ChartOption value);
+
+	/**
+	 * Returns the value of the '<em><b>Source</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source</em>' containment reference.
+	 * @see #setSource(ChartDatamart)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_Source()
+	 * @model containment="true"
+	 * @generated
+	 */
+	ChartDatamart getSource();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#getSource <em>Source</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source</em>' containment reference.
+	 * @see #getSource()
+	 * @generated
+	 */
+	void setSource(ChartDatamart value);
+
+} // Chart
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java
new file mode 100644
index 0000000..ec7a0a2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java
@@ -0,0 +1,145 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Axis</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAxis <em>Axis</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#getRenderType <em>Render Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#isShortLabel <em>Short Label</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAngle <em>Angle</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartAxis()
+ * @model
+ * @generated
+ */
+public interface ChartAxis extends ChartElement {
+	/**
+	 * Returns the value of the '<em><b>Axis</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Axis</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Axis</em>' reference.
+	 * @see #setAxis(DatamartAxis)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartAxis_Axis()
+	 * @model
+	 * @generated
+	 */
+	DatamartAxis getAxis();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAxis <em>Axis</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Axis</em>' reference.
+	 * @see #getAxis()
+	 * @generated
+	 */
+	void setAxis(DatamartAxis value);
+
+	/**
+	 * Returns the value of the '<em><b>Render Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.chart.RenderTypeEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Render Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Render Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.RenderTypeEnum
+	 * @see #setRenderType(RenderTypeEnum)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartAxis_RenderType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	RenderTypeEnum getRenderType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartAxis#getRenderType <em>Render Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Render Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.RenderTypeEnum
+	 * @see #getRenderType()
+	 * @generated
+	 */
+	void setRenderType(RenderTypeEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Short Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Short Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Short Label</em>' attribute.
+	 * @see #setShortLabel(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartAxis_ShortLabel()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isShortLabel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartAxis#isShortLabel <em>Short Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Short Label</em>' attribute.
+	 * @see #isShortLabel()
+	 * @generated
+	 */
+	void setShortLabel(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Angle</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Angle</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Angle</em>' attribute.
+	 * @see #setAngle(int)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartAxis_Angle()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getAngle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAngle <em>Angle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Angle</em>' attribute.
+	 * @see #getAngle()
+	 * @generated
+	 */
+	void setAngle(int value);
+
+} // ChartAxis
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java
new file mode 100644
index 0000000..66b8732
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Bar</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isShadow <em>Shadow</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isAnimated <em>Animated</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isSwapped <em>Swapped</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isStacked <em>Stacked</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBar()
+ * @model
+ * @generated
+ */
+public interface ChartBar extends ChartOption {
+	/**
+	 * Returns the value of the '<em><b>Shadow</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Shadow</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Shadow</em>' attribute.
+	 * @see #setShadow(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBar_Shadow()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isShadow();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBar#isShadow <em>Shadow</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Shadow</em>' attribute.
+	 * @see #isShadow()
+	 * @generated
+	 */
+	void setShadow(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Animated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Animated</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Animated</em>' attribute.
+	 * @see #setAnimated(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBar_Animated()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAnimated();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBar#isAnimated <em>Animated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Animated</em>' attribute.
+	 * @see #isAnimated()
+	 * @generated
+	 */
+	void setAnimated(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Swapped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Swapped</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Swapped</em>' attribute.
+	 * @see #setSwapped(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBar_Swapped()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isSwapped();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBar#isSwapped <em>Swapped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Swapped</em>' attribute.
+	 * @see #isSwapped()
+	 * @generated
+	 */
+	void setSwapped(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Stacked</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Stacked</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stacked</em>' attribute.
+	 * @see #setStacked(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBar_Stacked()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isStacked();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBar#isStacked <em>Stacked</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Stacked</em>' attribute.
+	 * @see #isStacked()
+	 * @generated
+	 */
+	void setStacked(boolean value);
+
+} // ChartBar
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java
new file mode 100644
index 0000000..f26a8ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Base</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBase#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBase()
+ * @model
+ * @generated
+ */
+public interface ChartBase extends ChartLazyResolver {
+	/**
+	 * 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.chart.ChartDSLPackage#getChartBase_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBase#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);
+
+} // ChartBase
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java
new file mode 100644
index 0000000..ffbd2c7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Bubble</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#isMultiplier <em>Multiplier</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#getMultiplierValue <em>Multiplier Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#isGradient <em>Gradient</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#isTransparent <em>Transparent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBubble()
+ * @model
+ * @generated
+ */
+public interface ChartBubble extends ChartOption {
+	/**
+	 * Returns the value of the '<em><b>Multiplier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Multiplier</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Multiplier</em>' attribute.
+	 * @see #setMultiplier(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBubble_Multiplier()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isMultiplier();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBubble#isMultiplier <em>Multiplier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Multiplier</em>' attribute.
+	 * @see #isMultiplier()
+	 * @generated
+	 */
+	void setMultiplier(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Multiplier Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Multiplier Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Multiplier Value</em>' attribute.
+	 * @see #setMultiplierValue(String)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBubble_MultiplierValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getMultiplierValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBubble#getMultiplierValue <em>Multiplier Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Multiplier Value</em>' attribute.
+	 * @see #getMultiplierValue()
+	 * @generated
+	 */
+	void setMultiplierValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Gradient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Gradient</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Gradient</em>' attribute.
+	 * @see #setGradient(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBubble_Gradient()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isGradient();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBubble#isGradient <em>Gradient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Gradient</em>' attribute.
+	 * @see #isGradient()
+	 * @generated
+	 */
+	void setGradient(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Transparent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transparent</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Transparent</em>' attribute.
+	 * @see #setTransparent(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBubble_Transparent()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isTransparent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartBubble#isTransparent <em>Transparent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Transparent</em>' attribute.
+	 * @see #isTransparent()
+	 * @generated
+	 */
+	void setTransparent(boolean value);
+
+} // ChartBubble
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java
new file mode 100644
index 0000000..bff1514
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+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.chart.ChartDSLPackage
+ * @generated
+ */
+public interface ChartDSLFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ChartDSLFactory eINSTANCE = org.eclipse.osbp.xtext.chart.impl.ChartDSLFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Chart Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Model</em>'.
+	 * @generated
+	 */
+	ChartModel createChartModel();
+
+	/**
+	 * Returns a new object of class '<em>Chart Lazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Lazy Resolver</em>'.
+	 * @generated
+	 */
+	ChartLazyResolver createChartLazyResolver();
+
+	/**
+	 * Returns a new object of class '<em>Chart Base</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Base</em>'.
+	 * @generated
+	 */
+	ChartBase createChartBase();
+
+	/**
+	 * Returns a new object of class '<em>Chart Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Package</em>'.
+	 * @generated
+	 */
+	ChartPackage createChartPackage();
+
+	/**
+	 * Returns a new object of class '<em>Chart</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart</em>'.
+	 * @generated
+	 */
+	Chart createChart();
+
+	/**
+	 * Returns a new object of class '<em>Chart Bar</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Bar</em>'.
+	 * @generated
+	 */
+	ChartBar createChartBar();
+
+	/**
+	 * Returns a new object of class '<em>Chart Line</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Line</em>'.
+	 * @generated
+	 */
+	ChartLine createChartLine();
+
+	/**
+	 * Returns a new object of class '<em>Chart Pie</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Pie</em>'.
+	 * @generated
+	 */
+	ChartPie createChartPie();
+
+	/**
+	 * Returns a new object of class '<em>Chart Donut</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Donut</em>'.
+	 * @generated
+	 */
+	ChartDonut createChartDonut();
+
+	/**
+	 * Returns a new object of class '<em>Chart Bubble</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Bubble</em>'.
+	 * @generated
+	 */
+	ChartBubble createChartBubble();
+
+	/**
+	 * Returns a new object of class '<em>Chart Gauge</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Gauge</em>'.
+	 * @generated
+	 */
+	ChartGauge createChartGauge();
+
+	/**
+	 * Returns a new object of class '<em>Chart Tree</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Tree</em>'.
+	 * @generated
+	 */
+	ChartTree createChartTree();
+
+	/**
+	 * Returns a new object of class '<em>Chart Number Interval</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Number Interval</em>'.
+	 * @generated
+	 */
+	ChartNumberInterval createChartNumberInterval();
+
+	/**
+	 * Returns a new object of class '<em>Chart Datamart</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Datamart</em>'.
+	 * @generated
+	 */
+	ChartDatamart createChartDatamart();
+
+	/**
+	 * Returns a new object of class '<em>Chart Legend</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Legend</em>'.
+	 * @generated
+	 */
+	ChartLegend createChartLegend();
+
+	/**
+	 * Returns a new object of class '<em>Chart Highlighter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Highlighter</em>'.
+	 * @generated
+	 */
+	ChartHighlighter createChartHighlighter();
+
+	/**
+	 * Returns a new object of class '<em>Chart Axis</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Axis</em>'.
+	 * @generated
+	 */
+	ChartAxis createChartAxis();
+
+	/**
+	 * Returns a new object of class '<em>Chart Segment Color</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Chart Segment Color</em>'.
+	 * @generated
+	 */
+	ChartSegmentColor createChartSegmentColor();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ChartDSLPackage getChartDSLPackage();
+
+} //ChartDSLFactory
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java
new file mode 100644
index 0000000..f85d3cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java
@@ -0,0 +1,2972 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='chart' modelName='ChartDSL' prefix='ChartDSL' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License v1.0 \r\n which accompanies this distribution, and is available at \r\n http://www.eclipse.org/legal/epl-v10.html \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tChristophe Loetz (Loetz GmbH&Co.KG) - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='chartdsl'"
+ * @generated
+ */
+public interface ChartDSLPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "chart";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/xtext/chart/ChartDSL";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "chartdsl";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ChartDSLPackage eINSTANCE = org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartModelImpl <em>Chart Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartModelImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartModel()
+	 * @generated
+	 */
+	int CHART_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_MODEL__PACKAGES = 0;
+
+	/**
+	 * The number of structural features of the '<em>Chart Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Chart Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_MODEL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartLazyResolverImpl <em>Chart Lazy Resolver</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartLazyResolverImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartLazyResolver()
+	 * @generated
+	 */
+	int CHART_LAZY_RESOLVER = 1;
+
+	/**
+	 * The number of structural features of the '<em>Chart Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LAZY_RESOLVER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = 0;
+
+	/**
+	 * The number of operations of the '<em>Chart Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LAZY_RESOLVER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartBaseImpl <em>Chart Base</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartBaseImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartBase()
+	 * @generated
+	 */
+	int CHART_BASE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BASE__NAME = CHART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Chart Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BASE_FEATURE_COUNT = CHART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BASE___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BASE_OPERATION_COUNT = CHART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartPackageImpl <em>Chart Package</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartPackageImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartPackage()
+	 * @generated
+	 */
+	int CHART_PACKAGE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_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 CHART_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
+
+	/**
+	 * The feature id for the '<em><b>Charts</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PACKAGE__CHARTS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Chart Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PACKAGE_FEATURE_COUNT = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PACKAGE_OPERATION_COUNT = OSBPTypesPackage.LPACKAGE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl <em>Chart</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChart()
+	 * @generated
+	 */
+	int CHART = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__NAME = CHART_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__DESCRIPTION = CHART_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Description Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__DESCRIPTION_VALUE = CHART_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Polling</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__POLLING = CHART_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Polling Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__POLLING_TIME = CHART_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Charttype</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__CHARTTYPE = CHART_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__SOURCE = CHART_BASE_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Chart</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_FEATURE_COUNT = CHART_BASE_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_OPERATION_COUNT = CHART_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.ChartOption <em>Chart Option</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.ChartOption
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartOption()
+	 * @generated
+	 */
+	int CHART_OPTION = 5;
+
+	/**
+	 * The number of structural features of the '<em>Chart Option</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_OPTION_FEATURE_COUNT = CHART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Option</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_OPTION_OPERATION_COUNT = CHART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl <em>Chart Bar</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartBarImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartBar()
+	 * @generated
+	 */
+	int CHART_BAR = 6;
+
+	/**
+	 * The feature id for the '<em><b>Shadow</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR__SHADOW = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Animated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR__ANIMATED = CHART_OPTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Swapped</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR__SWAPPED = CHART_OPTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Stacked</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR__STACKED = CHART_OPTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Chart Bar</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Bar</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BAR_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl <em>Chart Line</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartLineImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartLine()
+	 * @generated
+	 */
+	int CHART_LINE = 7;
+
+	/**
+	 * The feature id for the '<em><b>Animated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__ANIMATED = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Show Marker</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__SHOW_MARKER = CHART_OPTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Trend Line</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__TREND_LINE = CHART_OPTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Zoom</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__ZOOM = CHART_OPTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Cursor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__CURSOR = CHART_OPTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Tooltip</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__TOOLTIP = CHART_OPTION_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Fill To Zero</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__FILL_TO_ZERO = CHART_OPTION_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Fill Area</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE__FILL_AREA = CHART_OPTION_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>Chart Line</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 8;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Line</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LINE_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartPieImpl <em>Chart Pie</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartPieImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartPie()
+	 * @generated
+	 */
+	int CHART_PIE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Empty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PIE__EMPTY = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Chart Pie</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PIE_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PIE___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Pie</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_PIE_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartDonutImpl <em>Chart Donut</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDonutImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartDonut()
+	 * @generated
+	 */
+	int CHART_DONUT = 9;
+
+	/**
+	 * The number of structural features of the '<em>Chart Donut</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DONUT_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DONUT___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Donut</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DONUT_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl <em>Chart Bubble</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartBubble()
+	 * @generated
+	 */
+	int CHART_BUBBLE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Multiplier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE__MULTIPLIER = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Multiplier Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE__MULTIPLIER_VALUE = CHART_OPTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Gradient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE__GRADIENT = CHART_OPTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Transparent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE__TRANSPARENT = CHART_OPTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Chart Bubble</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Bubble</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_BUBBLE_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl <em>Chart Gauge</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartGauge()
+	 * @generated
+	 */
+	int CHART_GAUGE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Labeled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__LABELED = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Label Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__LABEL_VALUE = CHART_OPTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Has Ticks</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__HAS_TICKS = CHART_OPTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Min Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__MIN_VALUE = CHART_OPTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Max Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__MAX_VALUE = CHART_OPTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Has Intervals</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__HAS_INTERVALS = CHART_OPTION_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Intervals</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE__INTERVALS = CHART_OPTION_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Chart Gauge</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Gauge</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_GAUGE_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl <em>Chart Tree</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartTree()
+	 * @generated
+	 */
+	int CHART_TREE = 12;
+
+	/**
+	 * The feature id for the '<em><b>Map</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_TREE__MAP = CHART_OPTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Collapsible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_TREE__COLLAPSIBLE = CHART_OPTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Chart Tree</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_TREE_FEATURE_COUNT = CHART_OPTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_TREE___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_OPTION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Tree</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_TREE_OPERATION_COUNT = CHART_OPTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.ChartInterval <em>Chart Interval</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.ChartInterval
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartInterval()
+	 * @generated
+	 */
+	int CHART_INTERVAL = 13;
+
+	/**
+	 * The number of structural features of the '<em>Chart Interval</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_INTERVAL_FEATURE_COUNT = CHART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_INTERVAL___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Interval</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_INTERVAL_OPERATION_COUNT = CHART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl <em>Chart Number Interval</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartNumberInterval()
+	 * @generated
+	 */
+	int CHART_NUMBER_INTERVAL = 14;
+
+	/**
+	 * The feature id for the '<em><b>Number Interval Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE = CHART_INTERVAL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Number Range</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_NUMBER_INTERVAL__NUMBER_RANGE = CHART_INTERVAL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Chart Number Interval</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_NUMBER_INTERVAL_FEATURE_COUNT = CHART_INTERVAL_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_NUMBER_INTERVAL___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_INTERVAL___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Number Interval</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_NUMBER_INTERVAL_OPERATION_COUNT = CHART_INTERVAL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl <em>Chart Datamart</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartDatamart()
+	 * @generated
+	 */
+	int CHART_DATAMART = 15;
+
+	/**
+	 * The feature id for the '<em><b>Datamart Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DATAMART__DATAMART_REF = CHART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DATAMART__ELEMENTS = CHART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Chart Datamart</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DATAMART_FEATURE_COUNT = CHART_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DATAMART___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Datamart</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_DATAMART_OPERATION_COUNT = CHART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.ChartElement <em>Chart Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.ChartElement
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartElement()
+	 * @generated
+	 */
+	int CHART_ELEMENT = 16;
+
+	/**
+	 * The number of structural features of the '<em>Chart Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_ELEMENT_FEATURE_COUNT = CHART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_ELEMENT_OPERATION_COUNT = CHART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl <em>Chart Legend</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartLegend()
+	 * @generated
+	 */
+	int CHART_LEGEND = 17;
+
+	/**
+	 * The feature id for the '<em><b>Placement</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND__PLACEMENT = CHART_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Toggle</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND__TOGGLE = CHART_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Replot</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND__REPLOT = CHART_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Toggle Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND__TOGGLE_TYPE = CHART_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Chart Legend</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND_FEATURE_COUNT = CHART_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Legend</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_LEGEND_OPERATION_COUNT = CHART_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl <em>Chart Highlighter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartHighlighter()
+	 * @generated
+	 */
+	int CHART_HIGHLIGHTER = 18;
+
+	/**
+	 * The feature id for the '<em><b>Location</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_HIGHLIGHTER__LOCATION = CHART_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Tooltip Always</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_HIGHLIGHTER__TOOLTIP_ALWAYS = CHART_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Inside Chart</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_HIGHLIGHTER__INSIDE_CHART = CHART_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Chart Highlighter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_HIGHLIGHTER_FEATURE_COUNT = CHART_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_HIGHLIGHTER___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Highlighter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_HIGHLIGHTER_OPERATION_COUNT = CHART_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl <em>Chart Axis</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartAxis()
+	 * @generated
+	 */
+	int CHART_AXIS = 19;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS__AXIS = CHART_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Render Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS__RENDER_TYPE = CHART_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Short Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS__SHORT_LABEL = CHART_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Angle</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS__ANGLE = CHART_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Chart Axis</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS_FEATURE_COUNT = CHART_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Axis</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_AXIS_OPERATION_COUNT = CHART_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.ChartRangeElement <em>Chart Range Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.ChartRangeElement
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartRangeElement()
+	 * @generated
+	 */
+	int CHART_RANGE_ELEMENT = 20;
+
+	/**
+	 * The number of structural features of the '<em>Chart Range Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_RANGE_ELEMENT_FEATURE_COUNT = CHART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_RANGE_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Range Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_RANGE_ELEMENT_OPERATION_COUNT = CHART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartSegmentColorImpl <em>Chart Segment Color</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartSegmentColorImpl
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartSegmentColor()
+	 * @generated
+	 */
+	int CHART_SEGMENT_COLOR = 21;
+
+	/**
+	 * The feature id for the '<em><b>Rgb</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_SEGMENT_COLOR__RGB = CHART_RANGE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Chart Segment Color</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_SEGMENT_COLOR_FEATURE_COUNT = CHART_RANGE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_SEGMENT_COLOR___ERESOLVE_PROXY__INTERNALEOBJECT = CHART_RANGE_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Chart Segment Color</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_SEGMENT_COLOR_OPERATION_COUNT = CHART_RANGE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.LegendPlacementEnum <em>Legend Placement Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.LegendPlacementEnum
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getLegendPlacementEnum()
+	 * @generated
+	 */
+	int LEGEND_PLACEMENT_ENUM = 22;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.ToggleTypeEnum <em>Toggle Type Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.ToggleTypeEnum
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getToggleTypeEnum()
+	 * @generated
+	 */
+	int TOGGLE_TYPE_ENUM = 23;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.TooltipLocationEnum <em>Tooltip Location Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.TooltipLocationEnum
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getTooltipLocationEnum()
+	 * @generated
+	 */
+	int TOOLTIP_LOCATION_ENUM = 24;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.chart.RenderTypeEnum <em>Render Type Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.chart.RenderTypeEnum
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getRenderTypeEnum()
+	 * @generated
+	 */
+	int RENDER_TYPE_ENUM = 25;
+
+	/**
+	 * The meta object id for the '<em>Internal EObject</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.InternalEObject
+	 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 26;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartModel <em>Chart Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Model</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartModel
+	 * @generated
+	 */
+	EClass getChartModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.chart.ChartModel#getPackages <em>Packages</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Packages</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartModel#getPackages()
+	 * @see #getChartModel()
+	 * @generated
+	 */
+	EReference getChartModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartLazyResolver <em>Chart Lazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Lazy Resolver</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLazyResolver
+	 * @generated
+	 */
+	EClass getChartLazyResolver();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.xtext.chart.ChartLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject) <em>EResolve Proxy</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>EResolve Proxy</em>' operation.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject)
+	 * @generated
+	 */
+	EOperation getChartLazyResolver__EResolveProxy__InternalEObject();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartBase <em>Chart Base</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Base</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBase
+	 * @generated
+	 */
+	EClass getChartBase();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBase#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.chart.ChartBase#getName()
+	 * @see #getChartBase()
+	 * @generated
+	 */
+	EAttribute getChartBase_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartPackage <em>Chart Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Package</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartPackage
+	 * @generated
+	 */
+	EClass getChartPackage();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.chart.ChartPackage#getCharts <em>Charts</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Charts</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartPackage#getCharts()
+	 * @see #getChartPackage()
+	 * @generated
+	 */
+	EReference getChartPackage_Charts();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.Chart <em>Chart</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart
+	 * @generated
+	 */
+	EClass getChart();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.Chart#isDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#isDescription()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EAttribute getChart_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.Chart#getDescriptionValue <em>Description Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description Value</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#getDescriptionValue()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EAttribute getChart_DescriptionValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.Chart#isPolling <em>Polling</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Polling</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#isPolling()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EAttribute getChart_Polling();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.Chart#getPollingTime <em>Polling Time</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Polling Time</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#getPollingTime()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EAttribute getChart_PollingTime();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.chart.Chart#getCharttype <em>Charttype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Charttype</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#getCharttype()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EReference getChart_Charttype();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.chart.Chart#getSource <em>Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Source</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#getSource()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EReference getChart_Source();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartOption <em>Chart Option</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Option</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartOption
+	 * @generated
+	 */
+	EClass getChartOption();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartBar <em>Chart Bar</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Bar</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBar
+	 * @generated
+	 */
+	EClass getChartBar();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBar#isShadow <em>Shadow</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Shadow</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBar#isShadow()
+	 * @see #getChartBar()
+	 * @generated
+	 */
+	EAttribute getChartBar_Shadow();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBar#isAnimated <em>Animated</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Animated</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBar#isAnimated()
+	 * @see #getChartBar()
+	 * @generated
+	 */
+	EAttribute getChartBar_Animated();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBar#isSwapped <em>Swapped</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Swapped</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBar#isSwapped()
+	 * @see #getChartBar()
+	 * @generated
+	 */
+	EAttribute getChartBar_Swapped();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBar#isStacked <em>Stacked</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Stacked</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBar#isStacked()
+	 * @see #getChartBar()
+	 * @generated
+	 */
+	EAttribute getChartBar_Stacked();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartLine <em>Chart Line</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Line</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine
+	 * @generated
+	 */
+	EClass getChartLine();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isAnimated <em>Animated</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Animated</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isAnimated()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_Animated();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isShowMarker <em>Show Marker</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Show Marker</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isShowMarker()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_ShowMarker();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isTrendLine <em>Trend Line</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Trend Line</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isTrendLine()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_TrendLine();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isZoom <em>Zoom</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Zoom</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isZoom()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_Zoom();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isCursor <em>Cursor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cursor</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isCursor()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_Cursor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isTooltip <em>Tooltip</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Tooltip</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isTooltip()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_Tooltip();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillToZero <em>Fill To Zero</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Fill To Zero</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isFillToZero()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_FillToZero();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillArea <em>Fill Area</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Fill Area</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLine#isFillArea()
+	 * @see #getChartLine()
+	 * @generated
+	 */
+	EAttribute getChartLine_FillArea();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartPie <em>Chart Pie</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Pie</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartPie
+	 * @generated
+	 */
+	EClass getChartPie();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartPie#isEmpty <em>Empty</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Empty</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartPie#isEmpty()
+	 * @see #getChartPie()
+	 * @generated
+	 */
+	EAttribute getChartPie_Empty();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartDonut <em>Chart Donut</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Donut</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDonut
+	 * @generated
+	 */
+	EClass getChartDonut();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartBubble <em>Chart Bubble</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Bubble</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBubble
+	 * @generated
+	 */
+	EClass getChartBubble();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBubble#isMultiplier <em>Multiplier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Multiplier</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBubble#isMultiplier()
+	 * @see #getChartBubble()
+	 * @generated
+	 */
+	EAttribute getChartBubble_Multiplier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBubble#getMultiplierValue <em>Multiplier Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Multiplier Value</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBubble#getMultiplierValue()
+	 * @see #getChartBubble()
+	 * @generated
+	 */
+	EAttribute getChartBubble_MultiplierValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBubble#isGradient <em>Gradient</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Gradient</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBubble#isGradient()
+	 * @see #getChartBubble()
+	 * @generated
+	 */
+	EAttribute getChartBubble_Gradient();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartBubble#isTransparent <em>Transparent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Transparent</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBubble#isTransparent()
+	 * @see #getChartBubble()
+	 * @generated
+	 */
+	EAttribute getChartBubble_Transparent();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartGauge <em>Chart Gauge</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Gauge</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge
+	 * @generated
+	 */
+	EClass getChartGauge();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartGauge#isLabeled <em>Labeled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Labeled</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#isLabeled()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EAttribute getChartGauge_Labeled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getLabelValue <em>Label Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Label Value</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#getLabelValue()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EAttribute getChartGauge_LabelValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasTicks <em>Has Ticks</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Ticks</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#isHasTicks()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EAttribute getChartGauge_HasTicks();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getMinValue <em>Min Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min Value</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#getMinValue()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EAttribute getChartGauge_MinValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getMaxValue <em>Max Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Value</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#getMaxValue()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EAttribute getChartGauge_MaxValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasIntervals <em>Has Intervals</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Intervals</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#isHasIntervals()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EAttribute getChartGauge_HasIntervals();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getIntervals <em>Intervals</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Intervals</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartGauge#getIntervals()
+	 * @see #getChartGauge()
+	 * @generated
+	 */
+	EReference getChartGauge_Intervals();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartTree <em>Chart Tree</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Tree</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartTree
+	 * @generated
+	 */
+	EClass getChartTree();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartTree#isMap <em>Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Map</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartTree#isMap()
+	 * @see #getChartTree()
+	 * @generated
+	 */
+	EAttribute getChartTree_Map();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartTree#isCollapsible <em>Collapsible</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Collapsible</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartTree#isCollapsible()
+	 * @see #getChartTree()
+	 * @generated
+	 */
+	EAttribute getChartTree_Collapsible();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartInterval <em>Chart Interval</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Interval</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartInterval
+	 * @generated
+	 */
+	EClass getChartInterval();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval <em>Chart Number Interval</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Number Interval</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartNumberInterval
+	 * @generated
+	 */
+	EClass getChartNumberInterval();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberIntervalValue <em>Number Interval Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Number Interval Value</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberIntervalValue()
+	 * @see #getChartNumberInterval()
+	 * @generated
+	 */
+	EAttribute getChartNumberInterval_NumberIntervalValue();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberRange <em>Number Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Number Range</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberRange()
+	 * @see #getChartNumberInterval()
+	 * @generated
+	 */
+	EReference getChartNumberInterval_NumberRange();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartDatamart <em>Chart Datamart</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Datamart</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDatamart
+	 * @generated
+	 */
+	EClass getChartDatamart();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getDatamartRef <em>Datamart Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Datamart Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDatamart#getDatamartRef()
+	 * @see #getChartDatamart()
+	 * @generated
+	 */
+	EReference getChartDatamart_DatamartRef();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getElements <em>Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Elements</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDatamart#getElements()
+	 * @see #getChartDatamart()
+	 * @generated
+	 */
+	EReference getChartDatamart_Elements();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartElement <em>Chart Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Element</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartElement
+	 * @generated
+	 */
+	EClass getChartElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartLegend <em>Chart Legend</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Legend</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLegend
+	 * @generated
+	 */
+	EClass getChartLegend();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLegend#getPlacement <em>Placement</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Placement</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLegend#getPlacement()
+	 * @see #getChartLegend()
+	 * @generated
+	 */
+	EAttribute getChartLegend_Placement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLegend#isToggle <em>Toggle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Toggle</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLegend#isToggle()
+	 * @see #getChartLegend()
+	 * @generated
+	 */
+	EAttribute getChartLegend_Toggle();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLegend#isReplot <em>Replot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Replot</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLegend#isReplot()
+	 * @see #getChartLegend()
+	 * @generated
+	 */
+	EAttribute getChartLegend_Replot();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartLegend#getToggleType <em>Toggle Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Toggle Type</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLegend#getToggleType()
+	 * @see #getChartLegend()
+	 * @generated
+	 */
+	EAttribute getChartLegend_ToggleType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter <em>Chart Highlighter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Highlighter</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartHighlighter
+	 * @generated
+	 */
+	EClass getChartHighlighter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#getLocation <em>Location</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Location</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartHighlighter#getLocation()
+	 * @see #getChartHighlighter()
+	 * @generated
+	 */
+	EAttribute getChartHighlighter_Location();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isTooltipAlways <em>Tooltip Always</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Tooltip Always</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartHighlighter#isTooltipAlways()
+	 * @see #getChartHighlighter()
+	 * @generated
+	 */
+	EAttribute getChartHighlighter_TooltipAlways();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isInsideChart <em>Inside Chart</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Inside Chart</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartHighlighter#isInsideChart()
+	 * @see #getChartHighlighter()
+	 * @generated
+	 */
+	EAttribute getChartHighlighter_InsideChart();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartAxis <em>Chart Axis</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Axis</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartAxis
+	 * @generated
+	 */
+	EClass getChartAxis();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAxis <em>Axis</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Axis</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartAxis#getAxis()
+	 * @see #getChartAxis()
+	 * @generated
+	 */
+	EReference getChartAxis_Axis();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartAxis#getRenderType <em>Render Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Render Type</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartAxis#getRenderType()
+	 * @see #getChartAxis()
+	 * @generated
+	 */
+	EAttribute getChartAxis_RenderType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartAxis#isShortLabel <em>Short Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Short Label</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartAxis#isShortLabel()
+	 * @see #getChartAxis()
+	 * @generated
+	 */
+	EAttribute getChartAxis_ShortLabel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAngle <em>Angle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Angle</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartAxis#getAngle()
+	 * @see #getChartAxis()
+	 * @generated
+	 */
+	EAttribute getChartAxis_Angle();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartRangeElement <em>Chart Range Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Range Element</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartRangeElement
+	 * @generated
+	 */
+	EClass getChartRangeElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.chart.ChartSegmentColor <em>Chart Segment Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chart Segment Color</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartSegmentColor
+	 * @generated
+	 */
+	EClass getChartSegmentColor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.ChartSegmentColor#getRgb <em>Rgb</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rgb</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ChartSegmentColor#getRgb()
+	 * @see #getChartSegmentColor()
+	 * @generated
+	 */
+	EAttribute getChartSegmentColor_Rgb();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.chart.LegendPlacementEnum <em>Legend Placement Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Legend Placement Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.LegendPlacementEnum
+	 * @generated
+	 */
+	EEnum getLegendPlacementEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.chart.ToggleTypeEnum <em>Toggle Type Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Toggle Type Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.ToggleTypeEnum
+	 * @generated
+	 */
+	EEnum getToggleTypeEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.chart.TooltipLocationEnum <em>Tooltip Location Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Tooltip Location Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.TooltipLocationEnum
+	 * @generated
+	 */
+	EEnum getTooltipLocationEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.chart.RenderTypeEnum <em>Render Type Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Render Type Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.RenderTypeEnum
+	 * @generated
+	 */
+	EEnum getRenderTypeEnum();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.emf.ecore.InternalEObject <em>Internal EObject</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Internal EObject</em>'.
+	 * @see org.eclipse.emf.ecore.InternalEObject
+	 * @model instanceClass="org.eclipse.emf.ecore.InternalEObject"
+	 * @generated
+	 */
+	EDataType getInternalEObject();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ChartDSLFactory getChartDSLFactory();
+
+	/**
+	 * <!-- 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.chart.impl.ChartModelImpl <em>Chart Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartModelImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartModel()
+		 * @generated
+		 */
+		EClass CHART_MODEL = eINSTANCE.getChartModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_MODEL__PACKAGES = eINSTANCE.getChartModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartLazyResolverImpl <em>Chart Lazy Resolver</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartLazyResolverImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartLazyResolver()
+		 * @generated
+		 */
+		EClass CHART_LAZY_RESOLVER = eINSTANCE.getChartLazyResolver();
+
+		/**
+		 * The meta object literal for the '<em><b>EResolve Proxy</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = eINSTANCE.getChartLazyResolver__EResolveProxy__InternalEObject();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartBaseImpl <em>Chart Base</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartBaseImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartBase()
+		 * @generated
+		 */
+		EClass CHART_BASE = eINSTANCE.getChartBase();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BASE__NAME = eINSTANCE.getChartBase_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartPackageImpl <em>Chart Package</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartPackageImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartPackage()
+		 * @generated
+		 */
+		EClass CHART_PACKAGE = eINSTANCE.getChartPackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Charts</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_PACKAGE__CHARTS = eINSTANCE.getChartPackage_Charts();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl <em>Chart</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChart()
+		 * @generated
+		 */
+		EClass CHART = eINSTANCE.getChart();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART__DESCRIPTION = eINSTANCE.getChart_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Description Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART__DESCRIPTION_VALUE = eINSTANCE.getChart_DescriptionValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Polling</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART__POLLING = eINSTANCE.getChart_Polling();
+
+		/**
+		 * The meta object literal for the '<em><b>Polling Time</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART__POLLING_TIME = eINSTANCE.getChart_PollingTime();
+
+		/**
+		 * The meta object literal for the '<em><b>Charttype</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART__CHARTTYPE = eINSTANCE.getChart_Charttype();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART__SOURCE = eINSTANCE.getChart_Source();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.ChartOption <em>Chart Option</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.ChartOption
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartOption()
+		 * @generated
+		 */
+		EClass CHART_OPTION = eINSTANCE.getChartOption();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl <em>Chart Bar</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartBarImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartBar()
+		 * @generated
+		 */
+		EClass CHART_BAR = eINSTANCE.getChartBar();
+
+		/**
+		 * The meta object literal for the '<em><b>Shadow</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BAR__SHADOW = eINSTANCE.getChartBar_Shadow();
+
+		/**
+		 * The meta object literal for the '<em><b>Animated</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BAR__ANIMATED = eINSTANCE.getChartBar_Animated();
+
+		/**
+		 * The meta object literal for the '<em><b>Swapped</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BAR__SWAPPED = eINSTANCE.getChartBar_Swapped();
+
+		/**
+		 * The meta object literal for the '<em><b>Stacked</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BAR__STACKED = eINSTANCE.getChartBar_Stacked();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl <em>Chart Line</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartLineImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartLine()
+		 * @generated
+		 */
+		EClass CHART_LINE = eINSTANCE.getChartLine();
+
+		/**
+		 * The meta object literal for the '<em><b>Animated</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__ANIMATED = eINSTANCE.getChartLine_Animated();
+
+		/**
+		 * The meta object literal for the '<em><b>Show Marker</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__SHOW_MARKER = eINSTANCE.getChartLine_ShowMarker();
+
+		/**
+		 * The meta object literal for the '<em><b>Trend Line</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__TREND_LINE = eINSTANCE.getChartLine_TrendLine();
+
+		/**
+		 * The meta object literal for the '<em><b>Zoom</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__ZOOM = eINSTANCE.getChartLine_Zoom();
+
+		/**
+		 * The meta object literal for the '<em><b>Cursor</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__CURSOR = eINSTANCE.getChartLine_Cursor();
+
+		/**
+		 * The meta object literal for the '<em><b>Tooltip</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__TOOLTIP = eINSTANCE.getChartLine_Tooltip();
+
+		/**
+		 * The meta object literal for the '<em><b>Fill To Zero</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__FILL_TO_ZERO = eINSTANCE.getChartLine_FillToZero();
+
+		/**
+		 * The meta object literal for the '<em><b>Fill Area</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LINE__FILL_AREA = eINSTANCE.getChartLine_FillArea();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartPieImpl <em>Chart Pie</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartPieImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartPie()
+		 * @generated
+		 */
+		EClass CHART_PIE = eINSTANCE.getChartPie();
+
+		/**
+		 * The meta object literal for the '<em><b>Empty</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_PIE__EMPTY = eINSTANCE.getChartPie_Empty();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartDonutImpl <em>Chart Donut</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDonutImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartDonut()
+		 * @generated
+		 */
+		EClass CHART_DONUT = eINSTANCE.getChartDonut();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl <em>Chart Bubble</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartBubble()
+		 * @generated
+		 */
+		EClass CHART_BUBBLE = eINSTANCE.getChartBubble();
+
+		/**
+		 * The meta object literal for the '<em><b>Multiplier</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BUBBLE__MULTIPLIER = eINSTANCE.getChartBubble_Multiplier();
+
+		/**
+		 * The meta object literal for the '<em><b>Multiplier Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BUBBLE__MULTIPLIER_VALUE = eINSTANCE.getChartBubble_MultiplierValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Gradient</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BUBBLE__GRADIENT = eINSTANCE.getChartBubble_Gradient();
+
+		/**
+		 * The meta object literal for the '<em><b>Transparent</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_BUBBLE__TRANSPARENT = eINSTANCE.getChartBubble_Transparent();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl <em>Chart Gauge</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartGauge()
+		 * @generated
+		 */
+		EClass CHART_GAUGE = eINSTANCE.getChartGauge();
+
+		/**
+		 * The meta object literal for the '<em><b>Labeled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_GAUGE__LABELED = eINSTANCE.getChartGauge_Labeled();
+
+		/**
+		 * The meta object literal for the '<em><b>Label Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_GAUGE__LABEL_VALUE = eINSTANCE.getChartGauge_LabelValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Ticks</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_GAUGE__HAS_TICKS = eINSTANCE.getChartGauge_HasTicks();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_GAUGE__MIN_VALUE = eINSTANCE.getChartGauge_MinValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_GAUGE__MAX_VALUE = eINSTANCE.getChartGauge_MaxValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Intervals</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_GAUGE__HAS_INTERVALS = eINSTANCE.getChartGauge_HasIntervals();
+
+		/**
+		 * The meta object literal for the '<em><b>Intervals</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_GAUGE__INTERVALS = eINSTANCE.getChartGauge_Intervals();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl <em>Chart Tree</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartTree()
+		 * @generated
+		 */
+		EClass CHART_TREE = eINSTANCE.getChartTree();
+
+		/**
+		 * The meta object literal for the '<em><b>Map</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_TREE__MAP = eINSTANCE.getChartTree_Map();
+
+		/**
+		 * The meta object literal for the '<em><b>Collapsible</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_TREE__COLLAPSIBLE = eINSTANCE.getChartTree_Collapsible();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.ChartInterval <em>Chart Interval</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.ChartInterval
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartInterval()
+		 * @generated
+		 */
+		EClass CHART_INTERVAL = eINSTANCE.getChartInterval();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl <em>Chart Number Interval</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartNumberInterval()
+		 * @generated
+		 */
+		EClass CHART_NUMBER_INTERVAL = eINSTANCE.getChartNumberInterval();
+
+		/**
+		 * The meta object literal for the '<em><b>Number Interval Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE = eINSTANCE.getChartNumberInterval_NumberIntervalValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Number Range</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_NUMBER_INTERVAL__NUMBER_RANGE = eINSTANCE.getChartNumberInterval_NumberRange();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl <em>Chart Datamart</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartDatamart()
+		 * @generated
+		 */
+		EClass CHART_DATAMART = eINSTANCE.getChartDatamart();
+
+		/**
+		 * The meta object literal for the '<em><b>Datamart Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_DATAMART__DATAMART_REF = eINSTANCE.getChartDatamart_DatamartRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_DATAMART__ELEMENTS = eINSTANCE.getChartDatamart_Elements();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.ChartElement <em>Chart Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.ChartElement
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartElement()
+		 * @generated
+		 */
+		EClass CHART_ELEMENT = eINSTANCE.getChartElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl <em>Chart Legend</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartLegend()
+		 * @generated
+		 */
+		EClass CHART_LEGEND = eINSTANCE.getChartLegend();
+
+		/**
+		 * The meta object literal for the '<em><b>Placement</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LEGEND__PLACEMENT = eINSTANCE.getChartLegend_Placement();
+
+		/**
+		 * The meta object literal for the '<em><b>Toggle</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LEGEND__TOGGLE = eINSTANCE.getChartLegend_Toggle();
+
+		/**
+		 * The meta object literal for the '<em><b>Replot</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LEGEND__REPLOT = eINSTANCE.getChartLegend_Replot();
+
+		/**
+		 * The meta object literal for the '<em><b>Toggle Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_LEGEND__TOGGLE_TYPE = eINSTANCE.getChartLegend_ToggleType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl <em>Chart Highlighter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartHighlighter()
+		 * @generated
+		 */
+		EClass CHART_HIGHLIGHTER = eINSTANCE.getChartHighlighter();
+
+		/**
+		 * The meta object literal for the '<em><b>Location</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_HIGHLIGHTER__LOCATION = eINSTANCE.getChartHighlighter_Location();
+
+		/**
+		 * The meta object literal for the '<em><b>Tooltip Always</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_HIGHLIGHTER__TOOLTIP_ALWAYS = eINSTANCE.getChartHighlighter_TooltipAlways();
+
+		/**
+		 * The meta object literal for the '<em><b>Inside Chart</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_HIGHLIGHTER__INSIDE_CHART = eINSTANCE.getChartHighlighter_InsideChart();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl <em>Chart Axis</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartAxis()
+		 * @generated
+		 */
+		EClass CHART_AXIS = eINSTANCE.getChartAxis();
+
+		/**
+		 * The meta object literal for the '<em><b>Axis</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_AXIS__AXIS = eINSTANCE.getChartAxis_Axis();
+
+		/**
+		 * The meta object literal for the '<em><b>Render Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_AXIS__RENDER_TYPE = eINSTANCE.getChartAxis_RenderType();
+
+		/**
+		 * The meta object literal for the '<em><b>Short Label</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_AXIS__SHORT_LABEL = eINSTANCE.getChartAxis_ShortLabel();
+
+		/**
+		 * The meta object literal for the '<em><b>Angle</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_AXIS__ANGLE = eINSTANCE.getChartAxis_Angle();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.ChartRangeElement <em>Chart Range Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.ChartRangeElement
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartRangeElement()
+		 * @generated
+		 */
+		EClass CHART_RANGE_ELEMENT = eINSTANCE.getChartRangeElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.impl.ChartSegmentColorImpl <em>Chart Segment Color</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartSegmentColorImpl
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getChartSegmentColor()
+		 * @generated
+		 */
+		EClass CHART_SEGMENT_COLOR = eINSTANCE.getChartSegmentColor();
+
+		/**
+		 * The meta object literal for the '<em><b>Rgb</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART_SEGMENT_COLOR__RGB = eINSTANCE.getChartSegmentColor_Rgb();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.LegendPlacementEnum <em>Legend Placement Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.LegendPlacementEnum
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getLegendPlacementEnum()
+		 * @generated
+		 */
+		EEnum LEGEND_PLACEMENT_ENUM = eINSTANCE.getLegendPlacementEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.ToggleTypeEnum <em>Toggle Type Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.ToggleTypeEnum
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getToggleTypeEnum()
+		 * @generated
+		 */
+		EEnum TOGGLE_TYPE_ENUM = eINSTANCE.getToggleTypeEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.TooltipLocationEnum <em>Tooltip Location Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.TooltipLocationEnum
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getTooltipLocationEnum()
+		 * @generated
+		 */
+		EEnum TOOLTIP_LOCATION_ENUM = eINSTANCE.getTooltipLocationEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.chart.RenderTypeEnum <em>Render Type Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.chart.RenderTypeEnum
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getRenderTypeEnum()
+		 * @generated
+		 */
+		EEnum RENDER_TYPE_ENUM = eINSTANCE.getRenderTypeEnum();
+
+		/**
+		 * The meta object literal for the '<em>Internal EObject</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.emf.ecore.InternalEObject
+		 * @see org.eclipse.osbp.xtext.chart.impl.ChartDSLPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+	}
+
+} //ChartDSLPackage
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.java
new file mode 100644
index 0000000..46a6133
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.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 (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Datamart</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getDatamartRef <em>Datamart Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartDatamart()
+ * @model
+ * @generated
+ */
+public interface ChartDatamart extends ChartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Datamart Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Datamart Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Datamart Ref</em>' reference.
+	 * @see #setDatamartRef(DatamartDefinition)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartDatamart_DatamartRef()
+	 * @model
+	 * @generated
+	 */
+	DatamartDefinition getDatamartRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getDatamartRef <em>Datamart Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Datamart Ref</em>' reference.
+	 * @see #getDatamartRef()
+	 * @generated
+	 */
+	void setDatamartRef(DatamartDefinition value);
+
+	/**
+	 * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.chart.ChartElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Elements</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Elements</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartDatamart_Elements()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ChartElement> getElements();
+
+} // ChartDatamart
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java
new file mode 100644
index 0000000..3ebcb09
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Donut</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartDonut()
+ * @model
+ * @generated
+ */
+public interface ChartDonut extends ChartOption {
+} // ChartDonut
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java
new file mode 100644
index 0000000..2875fdc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartElement()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ChartElement extends ChartLazyResolver {
+} // ChartElement
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java
new file mode 100644
index 0000000..aa15119
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java
@@ -0,0 +1,213 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Gauge</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#isLabeled <em>Labeled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#getLabelValue <em>Label Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasTicks <em>Has Ticks</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasIntervals <em>Has Intervals</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#getIntervals <em>Intervals</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge()
+ * @model
+ * @generated
+ */
+public interface ChartGauge extends ChartOption {
+	/**
+	 * Returns the value of the '<em><b>Labeled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Labeled</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Labeled</em>' attribute.
+	 * @see #setLabeled(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_Labeled()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isLabeled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartGauge#isLabeled <em>Labeled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Labeled</em>' attribute.
+	 * @see #isLabeled()
+	 * @generated
+	 */
+	void setLabeled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Label Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Label Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Label Value</em>' attribute.
+	 * @see #setLabelValue(String)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_LabelValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getLabelValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getLabelValue <em>Label Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Label Value</em>' attribute.
+	 * @see #getLabelValue()
+	 * @generated
+	 */
+	void setLabelValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Ticks</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Ticks</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Ticks</em>' attribute.
+	 * @see #setHasTicks(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_HasTicks()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasTicks();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasTicks <em>Has Ticks</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Ticks</em>' attribute.
+	 * @see #isHasTicks()
+	 * @generated
+	 */
+	void setHasTicks(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Min Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min Value</em>' attribute.
+	 * @see #setMinValue(int)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_MinValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getMinValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getMinValue <em>Min Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min Value</em>' attribute.
+	 * @see #getMinValue()
+	 * @generated
+	 */
+	void setMinValue(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max Value</em>' attribute.
+	 * @see #setMaxValue(int)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_MaxValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getMaxValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartGauge#getMaxValue <em>Max Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Value</em>' attribute.
+	 * @see #getMaxValue()
+	 * @generated
+	 */
+	void setMaxValue(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Intervals</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Intervals</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Intervals</em>' attribute.
+	 * @see #setHasIntervals(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_HasIntervals()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasIntervals();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasIntervals <em>Has Intervals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Intervals</em>' attribute.
+	 * @see #isHasIntervals()
+	 * @generated
+	 */
+	void setHasIntervals(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Intervals</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.chart.ChartInterval}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Intervals</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>Intervals</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge_Intervals()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ChartInterval> getIntervals();
+
+} // ChartGauge
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java
new file mode 100644
index 0000000..d927117
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Highlighter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#getLocation <em>Location</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isTooltipAlways <em>Tooltip Always</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isInsideChart <em>Inside Chart</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartHighlighter()
+ * @model
+ * @generated
+ */
+public interface ChartHighlighter extends ChartElement {
+	/**
+	 * Returns the value of the '<em><b>Location</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.chart.TooltipLocationEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Location</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Location</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.TooltipLocationEnum
+	 * @see #setLocation(TooltipLocationEnum)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartHighlighter_Location()
+	 * @model unique="false"
+	 * @generated
+	 */
+	TooltipLocationEnum getLocation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#getLocation <em>Location</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Location</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.TooltipLocationEnum
+	 * @see #getLocation()
+	 * @generated
+	 */
+	void setLocation(TooltipLocationEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Tooltip Always</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Tooltip Always</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tooltip Always</em>' attribute.
+	 * @see #setTooltipAlways(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartHighlighter_TooltipAlways()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isTooltipAlways();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isTooltipAlways <em>Tooltip Always</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tooltip Always</em>' attribute.
+	 * @see #isTooltipAlways()
+	 * @generated
+	 */
+	void setTooltipAlways(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Inside Chart</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inside Chart</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inside Chart</em>' attribute.
+	 * @see #setInsideChart(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartHighlighter_InsideChart()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isInsideChart();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isInsideChart <em>Inside Chart</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inside Chart</em>' attribute.
+	 * @see #isInsideChart()
+	 * @generated
+	 */
+	void setInsideChart(boolean value);
+
+} // ChartHighlighter
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java
new file mode 100644
index 0000000..56018f7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartInterval()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ChartInterval extends ChartLazyResolver {
+} // ChartInterval
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java
new file mode 100644
index 0000000..5ac2f90
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLazyResolver()
+ * @model
+ * @generated
+ */
+public interface ChartLazyResolver extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.chart.InternalEObject" proxyUnique="false"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='<%org.eclipse.emf.ecore.resource.Resource%> _eResource = this.eResource();\n<%org.eclipse.emf.ecore.resource.ResourceSet%> _resourceSet = _eResource.getResourceSet();\nreturn <%org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3%>.resolve(proxy, _resourceSet);'"
+	 * @generated
+	 */
+	EObject eResolveProxy(InternalEObject proxy);
+
+} // ChartLazyResolver
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java
new file mode 100644
index 0000000..2935476
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Legend</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#getPlacement <em>Placement</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#isToggle <em>Toggle</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#isReplot <em>Replot</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#getToggleType <em>Toggle Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLegend()
+ * @model
+ * @generated
+ */
+public interface ChartLegend extends ChartElement {
+	/**
+	 * Returns the value of the '<em><b>Placement</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.chart.LegendPlacementEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Placement</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Placement</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.LegendPlacementEnum
+	 * @see #setPlacement(LegendPlacementEnum)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLegend_Placement()
+	 * @model unique="false"
+	 * @generated
+	 */
+	LegendPlacementEnum getPlacement();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLegend#getPlacement <em>Placement</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Placement</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.LegendPlacementEnum
+	 * @see #getPlacement()
+	 * @generated
+	 */
+	void setPlacement(LegendPlacementEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Toggle</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Toggle</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Toggle</em>' attribute.
+	 * @see #setToggle(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLegend_Toggle()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isToggle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLegend#isToggle <em>Toggle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Toggle</em>' attribute.
+	 * @see #isToggle()
+	 * @generated
+	 */
+	void setToggle(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Replot</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Replot</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Replot</em>' attribute.
+	 * @see #setReplot(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLegend_Replot()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isReplot();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLegend#isReplot <em>Replot</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Replot</em>' attribute.
+	 * @see #isReplot()
+	 * @generated
+	 */
+	void setReplot(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Toggle Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.chart.ToggleTypeEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Toggle Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Toggle Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.ToggleTypeEnum
+	 * @see #setToggleType(ToggleTypeEnum)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLegend_ToggleType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	ToggleTypeEnum getToggleType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLegend#getToggleType <em>Toggle Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Toggle Type</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.chart.ToggleTypeEnum
+	 * @see #getToggleType()
+	 * @generated
+	 */
+	void setToggleType(ToggleTypeEnum value);
+
+} // ChartLegend
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java
new file mode 100644
index 0000000..2b4819f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java
@@ -0,0 +1,249 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Line</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isAnimated <em>Animated</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isShowMarker <em>Show Marker</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isTrendLine <em>Trend Line</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isZoom <em>Zoom</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isCursor <em>Cursor</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isTooltip <em>Tooltip</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillToZero <em>Fill To Zero</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillArea <em>Fill Area</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine()
+ * @model
+ * @generated
+ */
+public interface ChartLine extends ChartOption {
+	/**
+	 * Returns the value of the '<em><b>Animated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Animated</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Animated</em>' attribute.
+	 * @see #setAnimated(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_Animated()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAnimated();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isAnimated <em>Animated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Animated</em>' attribute.
+	 * @see #isAnimated()
+	 * @generated
+	 */
+	void setAnimated(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Show Marker</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Show Marker</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Show Marker</em>' attribute.
+	 * @see #setShowMarker(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_ShowMarker()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isShowMarker();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isShowMarker <em>Show Marker</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Show Marker</em>' attribute.
+	 * @see #isShowMarker()
+	 * @generated
+	 */
+	void setShowMarker(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Trend Line</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Trend Line</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Trend Line</em>' attribute.
+	 * @see #setTrendLine(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_TrendLine()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isTrendLine();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isTrendLine <em>Trend Line</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Trend Line</em>' attribute.
+	 * @see #isTrendLine()
+	 * @generated
+	 */
+	void setTrendLine(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Zoom</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Zoom</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Zoom</em>' attribute.
+	 * @see #setZoom(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_Zoom()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isZoom();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isZoom <em>Zoom</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Zoom</em>' attribute.
+	 * @see #isZoom()
+	 * @generated
+	 */
+	void setZoom(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Cursor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cursor</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cursor</em>' attribute.
+	 * @see #setCursor(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_Cursor()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isCursor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isCursor <em>Cursor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cursor</em>' attribute.
+	 * @see #isCursor()
+	 * @generated
+	 */
+	void setCursor(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Tooltip</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Tooltip</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tooltip</em>' attribute.
+	 * @see #setTooltip(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_Tooltip()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isTooltip();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isTooltip <em>Tooltip</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tooltip</em>' attribute.
+	 * @see #isTooltip()
+	 * @generated
+	 */
+	void setTooltip(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Fill To Zero</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Fill To Zero</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fill To Zero</em>' attribute.
+	 * @see #setFillToZero(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_FillToZero()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isFillToZero();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillToZero <em>Fill To Zero</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Fill To Zero</em>' attribute.
+	 * @see #isFillToZero()
+	 * @generated
+	 */
+	void setFillToZero(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Fill Area</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Fill Area</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fill Area</em>' attribute.
+	 * @see #setFillArea(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine_FillArea()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isFillArea();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillArea <em>Fill Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Fill Area</em>' attribute.
+	 * @see #isFillArea()
+	 * @generated
+	 */
+	void setFillArea(boolean value);
+
+} // ChartLine
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java
new file mode 100644
index 0000000..c4d56e9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartModel()
+ * @model
+ * @generated
+ */
+public interface ChartModel extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.chart.ChartPackage}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Packages</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Packages</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartModel_Packages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ChartPackage> getPackages();
+
+} // ChartModel
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java
new file mode 100644
index 0000000..b8f6c3e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Number Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberIntervalValue <em>Number Interval Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberRange <em>Number Range</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartNumberInterval()
+ * @model
+ * @generated
+ */
+public interface ChartNumberInterval extends ChartInterval {
+	/**
+	 * Returns the value of the '<em><b>Number Interval Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Number Interval Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Number Interval Value</em>' attribute.
+	 * @see #setNumberIntervalValue(int)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartNumberInterval_NumberIntervalValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getNumberIntervalValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberIntervalValue <em>Number Interval Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Number Interval Value</em>' attribute.
+	 * @see #getNumberIntervalValue()
+	 * @generated
+	 */
+	void setNumberIntervalValue(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Number Range</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Number Range</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>Number Range</em>' containment reference.
+	 * @see #setNumberRange(ChartRangeElement)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartNumberInterval_NumberRange()
+	 * @model containment="true"
+	 * @generated
+	 */
+	ChartRangeElement getNumberRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberRange <em>Number Range</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Number Range</em>' containment reference.
+	 * @see #getNumberRange()
+	 * @generated
+	 */
+	void setNumberRange(ChartRangeElement value);
+
+} // ChartNumberInterval
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java
new file mode 100644
index 0000000..d291af9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Option</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartOption()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ChartOption extends ChartLazyResolver {
+} // ChartOption
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java
new file mode 100644
index 0000000..1d42d2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartPackage#getCharts <em>Charts</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartPackage()
+ * @model
+ * @generated
+ */
+public interface ChartPackage extends LPackage {
+	/**
+	 * Returns the value of the '<em><b>Charts</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.chart.Chart}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Charts</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>Charts</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartPackage_Charts()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Chart> getCharts();
+
+} // ChartPackage
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java
new file mode 100644
index 0000000..36b2449
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Pie</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartPie#isEmpty <em>Empty</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartPie()
+ * @model
+ * @generated
+ */
+public interface ChartPie extends ChartOption {
+	/**
+	 * Returns the value of the '<em><b>Empty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Empty</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Empty</em>' attribute.
+	 * @see #setEmpty(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartPie_Empty()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isEmpty();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartPie#isEmpty <em>Empty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Empty</em>' attribute.
+	 * @see #isEmpty()
+	 * @generated
+	 */
+	void setEmpty(boolean value);
+
+} // ChartPie
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java
new file mode 100644
index 0000000..f0e6caf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Range Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartRangeElement()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface ChartRangeElement extends ChartLazyResolver {
+} // ChartRangeElement
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java
new file mode 100644
index 0000000..cf0a7f3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Segment Color</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartSegmentColor#getRgb <em>Rgb</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartSegmentColor()
+ * @model
+ * @generated
+ */
+public interface ChartSegmentColor extends ChartRangeElement {
+	/**
+	 * Returns the value of the '<em><b>Rgb</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rgb</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rgb</em>' attribute.
+	 * @see #setRgb(String)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartSegmentColor_Rgb()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getRgb();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartSegmentColor#getRgb <em>Rgb</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rgb</em>' attribute.
+	 * @see #getRgb()
+	 * @generated
+	 */
+	void setRgb(String value);
+
+} // ChartSegmentColor
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java
new file mode 100644
index 0000000..fb49f7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chart Tree</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartTree#isMap <em>Map</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartTree#isCollapsible <em>Collapsible</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartTree()
+ * @model
+ * @generated
+ */
+public interface ChartTree extends ChartOption {
+	/**
+	 * Returns the value of the '<em><b>Map</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Map</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Map</em>' attribute.
+	 * @see #setMap(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartTree_Map()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isMap();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartTree#isMap <em>Map</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Map</em>' attribute.
+	 * @see #isMap()
+	 * @generated
+	 */
+	void setMap(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Collapsible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Collapsible</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Collapsible</em>' attribute.
+	 * @see #setCollapsible(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartTree_Collapsible()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isCollapsible();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartTree#isCollapsible <em>Collapsible</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Collapsible</em>' attribute.
+	 * @see #isCollapsible()
+	 * @generated
+	 */
+	void setCollapsible(boolean value);
+
+} // ChartTree
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java
new file mode 100644
index 0000000..2a67e3b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Legend Placement Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getLegendPlacementEnum()
+ * @model
+ * @generated
+ */
+public enum LegendPlacementEnum implements Enumerator {
+	/**
+	 * The '<em><b>INSIDE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INSIDE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INSIDE(0, "INSIDE", "inside"),
+
+	/**
+	 * The '<em><b>INSIDE GRID</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INSIDE_GRID_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INSIDE_GRID(0, "INSIDE_GRID", "inside-grid"),
+
+	/**
+	 * The '<em><b>OUTSIDE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OUTSIDE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OUTSIDE(0, "OUTSIDE", "outside"),
+
+	/**
+	 * The '<em><b>OUTSIDE GRID</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OUTSIDE_GRID_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OUTSIDE_GRID(0, "OUTSIDE_GRID", "outside-grid");
+
+	/**
+	 * The '<em><b>INSIDE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INSIDE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INSIDE
+	 * @model literal="inside"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INSIDE_VALUE = 0;
+
+	/**
+	 * The '<em><b>INSIDE GRID</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INSIDE GRID</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INSIDE_GRID
+	 * @model literal="inside-grid"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INSIDE_GRID_VALUE = 0;
+
+	/**
+	 * The '<em><b>OUTSIDE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>OUTSIDE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OUTSIDE
+	 * @model literal="outside"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OUTSIDE_VALUE = 0;
+
+	/**
+	 * The '<em><b>OUTSIDE GRID</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>OUTSIDE GRID</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OUTSIDE_GRID
+	 * @model literal="outside-grid"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OUTSIDE_GRID_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Legend Placement Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LegendPlacementEnum[] VALUES_ARRAY =
+		new LegendPlacementEnum[] {
+			INSIDE,
+			INSIDE_GRID,
+			OUTSIDE,
+			OUTSIDE_GRID,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Legend Placement Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LegendPlacementEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Legend Placement Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LegendPlacementEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LegendPlacementEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Legend Placement Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LegendPlacementEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LegendPlacementEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Legend Placement Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LegendPlacementEnum get(int value) {
+		switch (value) {
+			case INSIDE_VALUE: return INSIDE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private LegendPlacementEnum(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //LegendPlacementEnum
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java
new file mode 100644
index 0000000..af3ab3d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Render Type Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getRenderTypeEnum()
+ * @model
+ * @generated
+ */
+public enum RenderTypeEnum implements Enumerator {
+	/**
+	 * The '<em><b>CATEGORY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CATEGORY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CATEGORY(0, "CATEGORY", "category"),
+
+	/**
+	 * The '<em><b>LINEAR</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LINEAR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LINEAR(0, "LINEAR", "linear"),
+
+	/**
+	 * The '<em><b>DATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DATE(0, "DATE", "date"),
+
+	/**
+	 * The '<em><b>LOG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOG(0, "LOG", "logarithmic"),
+
+	/**
+	 * The '<em><b>PYRAMID</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PYRAMID_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PYRAMID(0, "PYRAMID", "pyramid");
+
+	/**
+	 * The '<em><b>CATEGORY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>CATEGORY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #CATEGORY
+	 * @model literal="category"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CATEGORY_VALUE = 0;
+
+	/**
+	 * The '<em><b>LINEAR</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LINEAR</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LINEAR
+	 * @model literal="linear"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LINEAR_VALUE = 0;
+
+	/**
+	 * The '<em><b>DATE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DATE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DATE
+	 * @model literal="date"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DATE_VALUE = 0;
+
+	/**
+	 * The '<em><b>LOG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LOG</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LOG
+	 * @model literal="logarithmic"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOG_VALUE = 0;
+
+	/**
+	 * The '<em><b>PYRAMID</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PYRAMID</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PYRAMID
+	 * @model literal="pyramid"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PYRAMID_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Render Type Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final RenderTypeEnum[] VALUES_ARRAY =
+		new RenderTypeEnum[] {
+			CATEGORY,
+			LINEAR,
+			DATE,
+			LOG,
+			PYRAMID,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Render Type Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<RenderTypeEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Render Type Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RenderTypeEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RenderTypeEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Render Type Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RenderTypeEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RenderTypeEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Render Type Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RenderTypeEnum get(int value) {
+		switch (value) {
+			case CATEGORY_VALUE: return CATEGORY;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private RenderTypeEnum(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //RenderTypeEnum
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java
new file mode 100644
index 0000000..ed26bdc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java
@@ -0,0 +1,244 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Toggle Type Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getToggleTypeEnum()
+ * @model
+ * @generated
+ */
+public enum ToggleTypeEnum implements Enumerator {
+	/**
+	 * The '<em><b>NORMAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORMAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORMAL(0, "NORMAL", "normal"),
+
+	/**
+	 * The '<em><b>SLOW</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SLOW_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SLOW(0, "SLOW", "slow"),
+
+	/**
+	 * The '<em><b>FAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FAST(0, "FAST", "fast");
+
+	/**
+	 * The '<em><b>NORMAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORMAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORMAL
+	 * @model literal="normal"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORMAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>SLOW</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SLOW</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SLOW
+	 * @model literal="slow"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SLOW_VALUE = 0;
+
+	/**
+	 * The '<em><b>FAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>FAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #FAST
+	 * @model literal="fast"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAST_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Toggle Type Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ToggleTypeEnum[] VALUES_ARRAY =
+		new ToggleTypeEnum[] {
+			NORMAL,
+			SLOW,
+			FAST,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Toggle Type Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ToggleTypeEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Toggle Type Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ToggleTypeEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ToggleTypeEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Toggle Type Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ToggleTypeEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ToggleTypeEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Toggle Type Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ToggleTypeEnum get(int value) {
+		switch (value) {
+			case NORMAL_VALUE: return NORMAL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ToggleTypeEnum(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //ToggleTypeEnum
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java
new file mode 100644
index 0000000..b8729d6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java
@@ -0,0 +1,374 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Tooltip Location Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getTooltipLocationEnum()
+ * @model
+ * @generated
+ */
+public enum TooltipLocationEnum implements Enumerator {
+	/**
+	 * The '<em><b>NORTH</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORTH(0, "NORTH", "north"),
+
+	/**
+	 * The '<em><b>NORTH EAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_EAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORTH_EAST(0, "NORTH_EAST", "north-east"),
+
+	/**
+	 * The '<em><b>EAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EAST(0, "EAST", "east"),
+
+	/**
+	 * The '<em><b>SOUTH EAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_EAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOUTH_EAST(0, "SOUTH_EAST", "south-east"),
+
+	/**
+	 * The '<em><b>SOUTH</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOUTH(0, "SOUTH", "south"),
+
+	/**
+	 * The '<em><b>SOUTH WEST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_WEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOUTH_WEST(0, "SOUTH_WEST", "south-west"),
+
+	/**
+	 * The '<em><b>WEST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WEST(0, "WEST", "west"),
+
+	/**
+	 * The '<em><b>NORTH WEST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_WEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORTH_WEST(0, "NORTH_WEST", "north-west");
+
+	/**
+	 * The '<em><b>NORTH</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORTH</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORTH
+	 * @model literal="north"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORTH_VALUE = 0;
+
+	/**
+	 * The '<em><b>NORTH EAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORTH EAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_EAST
+	 * @model literal="north-east"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORTH_EAST_VALUE = 0;
+
+	/**
+	 * The '<em><b>EAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>EAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EAST
+	 * @model literal="east"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EAST_VALUE = 0;
+
+	/**
+	 * The '<em><b>SOUTH EAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SOUTH EAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_EAST
+	 * @model literal="south-east"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOUTH_EAST_VALUE = 0;
+
+	/**
+	 * The '<em><b>SOUTH</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SOUTH</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH
+	 * @model literal="south"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOUTH_VALUE = 0;
+
+	/**
+	 * The '<em><b>SOUTH WEST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SOUTH WEST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_WEST
+	 * @model literal="south-west"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOUTH_WEST_VALUE = 0;
+
+	/**
+	 * The '<em><b>WEST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WEST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WEST
+	 * @model literal="west"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WEST_VALUE = 0;
+
+	/**
+	 * The '<em><b>NORTH WEST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORTH WEST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_WEST
+	 * @model literal="north-west"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORTH_WEST_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Tooltip Location Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TooltipLocationEnum[] VALUES_ARRAY =
+		new TooltipLocationEnum[] {
+			NORTH,
+			NORTH_EAST,
+			EAST,
+			SOUTH_EAST,
+			SOUTH,
+			SOUTH_WEST,
+			WEST,
+			NORTH_WEST,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Tooltip Location Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TooltipLocationEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Tooltip Location Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TooltipLocationEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TooltipLocationEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Tooltip Location Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TooltipLocationEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TooltipLocationEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Tooltip Location Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TooltipLocationEnum get(int value) {
+		switch (value) {
+			case NORTH_VALUE: return NORTH;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private TooltipLocationEnum(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //TooltipLocationEnum
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java
new file mode 100644
index 0000000..37863da
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java
@@ -0,0 +1,345 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.ChartAxis;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.RenderTypeEnum;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#getAxis <em>Axis</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#getRenderType <em>Render Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#isShortLabel <em>Short Label</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#getAngle <em>Angle</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartAxisImpl extends ChartLazyResolverImpl implements ChartAxis {
+	/**
+	 * The cached value of the '{@link #getAxis() <em>Axis</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAxis()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartAxis axis;
+
+	/**
+	 * The default value of the '{@link #getRenderType() <em>Render Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRenderType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final RenderTypeEnum RENDER_TYPE_EDEFAULT = RenderTypeEnum.CATEGORY;
+
+	/**
+	 * The cached value of the '{@link #getRenderType() <em>Render Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRenderType()
+	 * @generated
+	 * @ordered
+	 */
+	protected RenderTypeEnum renderType = RENDER_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isShortLabel() <em>Short Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShortLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SHORT_LABEL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isShortLabel() <em>Short Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShortLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean shortLabel = SHORT_LABEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAngle() <em>Angle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAngle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int ANGLE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getAngle() <em>Angle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAngle()
+	 * @generated
+	 * @ordered
+	 */
+	protected int angle = ANGLE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAxis getAxis() {
+		if (axis != null && axis.eIsProxy()) {
+			InternalEObject oldAxis = (InternalEObject)axis;
+			axis = (DatamartAxis)eResolveProxy(oldAxis);
+			if (axis != oldAxis) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ChartDSLPackage.CHART_AXIS__AXIS, oldAxis, axis));
+			}
+		}
+		return axis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAxis basicGetAxis() {
+		return axis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAxis(DatamartAxis newAxis) {
+		DatamartAxis oldAxis = axis;
+		axis = newAxis;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_AXIS__AXIS, oldAxis, axis));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RenderTypeEnum getRenderType() {
+		return renderType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRenderType(RenderTypeEnum newRenderType) {
+		RenderTypeEnum oldRenderType = renderType;
+		renderType = newRenderType == null ? RENDER_TYPE_EDEFAULT : newRenderType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_AXIS__RENDER_TYPE, oldRenderType, renderType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isShortLabel() {
+		return shortLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setShortLabel(boolean newShortLabel) {
+		boolean oldShortLabel = shortLabel;
+		shortLabel = newShortLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_AXIS__SHORT_LABEL, oldShortLabel, shortLabel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getAngle() {
+		return angle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAngle(int newAngle) {
+		int oldAngle = angle;
+		angle = newAngle;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_AXIS__ANGLE, oldAngle, angle));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_AXIS__AXIS:
+				if (resolve) return getAxis();
+				return basicGetAxis();
+			case ChartDSLPackage.CHART_AXIS__RENDER_TYPE:
+				return getRenderType();
+			case ChartDSLPackage.CHART_AXIS__SHORT_LABEL:
+				return isShortLabel();
+			case ChartDSLPackage.CHART_AXIS__ANGLE:
+				return getAngle();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_AXIS__AXIS:
+				setAxis((DatamartAxis)newValue);
+				return;
+			case ChartDSLPackage.CHART_AXIS__RENDER_TYPE:
+				setRenderType((RenderTypeEnum)newValue);
+				return;
+			case ChartDSLPackage.CHART_AXIS__SHORT_LABEL:
+				setShortLabel((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_AXIS__ANGLE:
+				setAngle((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_AXIS__AXIS:
+				setAxis((DatamartAxis)null);
+				return;
+			case ChartDSLPackage.CHART_AXIS__RENDER_TYPE:
+				setRenderType(RENDER_TYPE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_AXIS__SHORT_LABEL:
+				setShortLabel(SHORT_LABEL_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_AXIS__ANGLE:
+				setAngle(ANGLE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_AXIS__AXIS:
+				return axis != null;
+			case ChartDSLPackage.CHART_AXIS__RENDER_TYPE:
+				return renderType != RENDER_TYPE_EDEFAULT;
+			case ChartDSLPackage.CHART_AXIS__SHORT_LABEL:
+				return shortLabel != SHORT_LABEL_EDEFAULT;
+			case ChartDSLPackage.CHART_AXIS__ANGLE:
+				return angle != ANGLE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (renderType: ");
+		result.append(renderType);
+		result.append(", shortLabel: ");
+		result.append(shortLabel);
+		result.append(", angle: ");
+		result.append(angle);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartAxisImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java
new file mode 100644
index 0000000..7b968c6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java
@@ -0,0 +1,335 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartBar;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Bar</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isShadow <em>Shadow</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isAnimated <em>Animated</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isSwapped <em>Swapped</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isStacked <em>Stacked</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartBarImpl extends ChartLazyResolverImpl implements ChartBar {
+	/**
+	 * The default value of the '{@link #isShadow() <em>Shadow</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShadow()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SHADOW_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isShadow() <em>Shadow</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShadow()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean shadow = SHADOW_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAnimated() <em>Animated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAnimated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ANIMATED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAnimated() <em>Animated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAnimated()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean animated = ANIMATED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isSwapped() <em>Swapped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSwapped()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SWAPPED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSwapped() <em>Swapped</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSwapped()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean swapped = SWAPPED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isStacked() <em>Stacked</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isStacked()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean STACKED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isStacked() <em>Stacked</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isStacked()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean stacked = STACKED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartBarImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_BAR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isShadow() {
+		return shadow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setShadow(boolean newShadow) {
+		boolean oldShadow = shadow;
+		shadow = newShadow;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BAR__SHADOW, oldShadow, shadow));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAnimated() {
+		return animated;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnimated(boolean newAnimated) {
+		boolean oldAnimated = animated;
+		animated = newAnimated;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BAR__ANIMATED, oldAnimated, animated));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSwapped() {
+		return swapped;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSwapped(boolean newSwapped) {
+		boolean oldSwapped = swapped;
+		swapped = newSwapped;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BAR__SWAPPED, oldSwapped, swapped));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isStacked() {
+		return stacked;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStacked(boolean newStacked) {
+		boolean oldStacked = stacked;
+		stacked = newStacked;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BAR__STACKED, oldStacked, stacked));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BAR__SHADOW:
+				return isShadow();
+			case ChartDSLPackage.CHART_BAR__ANIMATED:
+				return isAnimated();
+			case ChartDSLPackage.CHART_BAR__SWAPPED:
+				return isSwapped();
+			case ChartDSLPackage.CHART_BAR__STACKED:
+				return isStacked();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BAR__SHADOW:
+				setShadow((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_BAR__ANIMATED:
+				setAnimated((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_BAR__SWAPPED:
+				setSwapped((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_BAR__STACKED:
+				setStacked((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BAR__SHADOW:
+				setShadow(SHADOW_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_BAR__ANIMATED:
+				setAnimated(ANIMATED_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_BAR__SWAPPED:
+				setSwapped(SWAPPED_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_BAR__STACKED:
+				setStacked(STACKED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BAR__SHADOW:
+				return shadow != SHADOW_EDEFAULT;
+			case ChartDSLPackage.CHART_BAR__ANIMATED:
+				return animated != ANIMATED_EDEFAULT;
+			case ChartDSLPackage.CHART_BAR__SWAPPED:
+				return swapped != SWAPPED_EDEFAULT;
+			case ChartDSLPackage.CHART_BAR__STACKED:
+				return stacked != STACKED_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (shadow: ");
+		result.append(shadow);
+		result.append(", animated: ");
+		result.append(animated);
+		result.append(", swapped: ");
+		result.append(swapped);
+		result.append(", stacked: ");
+		result.append(stacked);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartBarImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java
new file mode 100644
index 0000000..519c0af
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartBase;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Base</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBaseImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartBaseImpl extends ChartLazyResolverImpl implements ChartBase {
+	/**
+	 * 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 ChartBaseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_BASE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BASE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BASE__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BASE__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BASE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BASE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartBaseImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java
new file mode 100644
index 0000000..5cdc07c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java
@@ -0,0 +1,335 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartBubble;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Bubble</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#isMultiplier <em>Multiplier</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#getMultiplierValue <em>Multiplier Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#isGradient <em>Gradient</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#isTransparent <em>Transparent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartBubbleImpl extends ChartLazyResolverImpl implements ChartBubble {
+	/**
+	 * The default value of the '{@link #isMultiplier() <em>Multiplier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMultiplier()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean MULTIPLIER_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isMultiplier() <em>Multiplier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMultiplier()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean multiplier = MULTIPLIER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMultiplierValue() <em>Multiplier Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplierValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MULTIPLIER_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMultiplierValue() <em>Multiplier Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplierValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String multiplierValue = MULTIPLIER_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isGradient() <em>Gradient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isGradient()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean GRADIENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isGradient() <em>Gradient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isGradient()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean gradient = GRADIENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTransparent() <em>Transparent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransparent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TRANSPARENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTransparent() <em>Transparent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransparent()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean transparent = TRANSPARENT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartBubbleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_BUBBLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isMultiplier() {
+		return multiplier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplier(boolean newMultiplier) {
+		boolean oldMultiplier = multiplier;
+		multiplier = newMultiplier;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BUBBLE__MULTIPLIER, oldMultiplier, multiplier));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMultiplierValue() {
+		return multiplierValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplierValue(String newMultiplierValue) {
+		String oldMultiplierValue = multiplierValue;
+		multiplierValue = newMultiplierValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BUBBLE__MULTIPLIER_VALUE, oldMultiplierValue, multiplierValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isGradient() {
+		return gradient;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setGradient(boolean newGradient) {
+		boolean oldGradient = gradient;
+		gradient = newGradient;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BUBBLE__GRADIENT, oldGradient, gradient));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTransparent() {
+		return transparent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransparent(boolean newTransparent) {
+		boolean oldTransparent = transparent;
+		transparent = newTransparent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_BUBBLE__TRANSPARENT, oldTransparent, transparent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER:
+				return isMultiplier();
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER_VALUE:
+				return getMultiplierValue();
+			case ChartDSLPackage.CHART_BUBBLE__GRADIENT:
+				return isGradient();
+			case ChartDSLPackage.CHART_BUBBLE__TRANSPARENT:
+				return isTransparent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER:
+				setMultiplier((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER_VALUE:
+				setMultiplierValue((String)newValue);
+				return;
+			case ChartDSLPackage.CHART_BUBBLE__GRADIENT:
+				setGradient((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_BUBBLE__TRANSPARENT:
+				setTransparent((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER:
+				setMultiplier(MULTIPLIER_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER_VALUE:
+				setMultiplierValue(MULTIPLIER_VALUE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_BUBBLE__GRADIENT:
+				setGradient(GRADIENT_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_BUBBLE__TRANSPARENT:
+				setTransparent(TRANSPARENT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER:
+				return multiplier != MULTIPLIER_EDEFAULT;
+			case ChartDSLPackage.CHART_BUBBLE__MULTIPLIER_VALUE:
+				return MULTIPLIER_VALUE_EDEFAULT == null ? multiplierValue != null : !MULTIPLIER_VALUE_EDEFAULT.equals(multiplierValue);
+			case ChartDSLPackage.CHART_BUBBLE__GRADIENT:
+				return gradient != GRADIENT_EDEFAULT;
+			case ChartDSLPackage.CHART_BUBBLE__TRANSPARENT:
+				return transparent != TRANSPARENT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (multiplier: ");
+		result.append(multiplier);
+		result.append(", multiplierValue: ");
+		result.append(multiplierValue);
+		result.append(", gradient: ");
+		result.append(gradient);
+		result.append(", transparent: ");
+		result.append(transparent);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartBubbleImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java
new file mode 100644
index 0000000..8ce67e7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java
@@ -0,0 +1,439 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.osbp.xtext.chart.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ChartDSLFactoryImpl extends EFactoryImpl implements ChartDSLFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ChartDSLFactory init() {
+		try {
+			ChartDSLFactory theChartDSLFactory = (ChartDSLFactory)EPackage.Registry.INSTANCE.getEFactory(ChartDSLPackage.eNS_URI);
+			if (theChartDSLFactory != null) {
+				return theChartDSLFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ChartDSLFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDSLFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ChartDSLPackage.CHART_MODEL: return createChartModel();
+			case ChartDSLPackage.CHART_LAZY_RESOLVER: return createChartLazyResolver();
+			case ChartDSLPackage.CHART_BASE: return createChartBase();
+			case ChartDSLPackage.CHART_PACKAGE: return createChartPackage();
+			case ChartDSLPackage.CHART: return createChart();
+			case ChartDSLPackage.CHART_BAR: return createChartBar();
+			case ChartDSLPackage.CHART_LINE: return createChartLine();
+			case ChartDSLPackage.CHART_PIE: return createChartPie();
+			case ChartDSLPackage.CHART_DONUT: return createChartDonut();
+			case ChartDSLPackage.CHART_BUBBLE: return createChartBubble();
+			case ChartDSLPackage.CHART_GAUGE: return createChartGauge();
+			case ChartDSLPackage.CHART_TREE: return createChartTree();
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL: return createChartNumberInterval();
+			case ChartDSLPackage.CHART_DATAMART: return createChartDatamart();
+			case ChartDSLPackage.CHART_LEGEND: return createChartLegend();
+			case ChartDSLPackage.CHART_HIGHLIGHTER: return createChartHighlighter();
+			case ChartDSLPackage.CHART_AXIS: return createChartAxis();
+			case ChartDSLPackage.CHART_SEGMENT_COLOR: return createChartSegmentColor();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case ChartDSLPackage.LEGEND_PLACEMENT_ENUM:
+				return createLegendPlacementEnumFromString(eDataType, initialValue);
+			case ChartDSLPackage.TOGGLE_TYPE_ENUM:
+				return createToggleTypeEnumFromString(eDataType, initialValue);
+			case ChartDSLPackage.TOOLTIP_LOCATION_ENUM:
+				return createTooltipLocationEnumFromString(eDataType, initialValue);
+			case ChartDSLPackage.RENDER_TYPE_ENUM:
+				return createRenderTypeEnumFromString(eDataType, initialValue);
+			case ChartDSLPackage.INTERNAL_EOBJECT:
+				return createInternalEObjectFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case ChartDSLPackage.LEGEND_PLACEMENT_ENUM:
+				return convertLegendPlacementEnumToString(eDataType, instanceValue);
+			case ChartDSLPackage.TOGGLE_TYPE_ENUM:
+				return convertToggleTypeEnumToString(eDataType, instanceValue);
+			case ChartDSLPackage.TOOLTIP_LOCATION_ENUM:
+				return convertTooltipLocationEnumToString(eDataType, instanceValue);
+			case ChartDSLPackage.RENDER_TYPE_ENUM:
+				return convertRenderTypeEnumToString(eDataType, instanceValue);
+			case ChartDSLPackage.INTERNAL_EOBJECT:
+				return convertInternalEObjectToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartModel createChartModel() {
+		ChartModelImpl chartModel = new ChartModelImpl();
+		return chartModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartLazyResolver createChartLazyResolver() {
+		ChartLazyResolverImpl chartLazyResolver = new ChartLazyResolverImpl();
+		return chartLazyResolver;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartBase createChartBase() {
+		ChartBaseImpl chartBase = new ChartBaseImpl();
+		return chartBase;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartPackage createChartPackage() {
+		ChartPackageImpl chartPackage = new ChartPackageImpl();
+		return chartPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Chart createChart() {
+		ChartImpl chart = new ChartImpl();
+		return chart;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartBar createChartBar() {
+		ChartBarImpl chartBar = new ChartBarImpl();
+		return chartBar;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartLine createChartLine() {
+		ChartLineImpl chartLine = new ChartLineImpl();
+		return chartLine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartPie createChartPie() {
+		ChartPieImpl chartPie = new ChartPieImpl();
+		return chartPie;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDonut createChartDonut() {
+		ChartDonutImpl chartDonut = new ChartDonutImpl();
+		return chartDonut;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartBubble createChartBubble() {
+		ChartBubbleImpl chartBubble = new ChartBubbleImpl();
+		return chartBubble;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartGauge createChartGauge() {
+		ChartGaugeImpl chartGauge = new ChartGaugeImpl();
+		return chartGauge;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartTree createChartTree() {
+		ChartTreeImpl chartTree = new ChartTreeImpl();
+		return chartTree;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartNumberInterval createChartNumberInterval() {
+		ChartNumberIntervalImpl chartNumberInterval = new ChartNumberIntervalImpl();
+		return chartNumberInterval;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDatamart createChartDatamart() {
+		ChartDatamartImpl chartDatamart = new ChartDatamartImpl();
+		return chartDatamart;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartLegend createChartLegend() {
+		ChartLegendImpl chartLegend = new ChartLegendImpl();
+		return chartLegend;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartHighlighter createChartHighlighter() {
+		ChartHighlighterImpl chartHighlighter = new ChartHighlighterImpl();
+		return chartHighlighter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartAxis createChartAxis() {
+		ChartAxisImpl chartAxis = new ChartAxisImpl();
+		return chartAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartSegmentColor createChartSegmentColor() {
+		ChartSegmentColorImpl chartSegmentColor = new ChartSegmentColorImpl();
+		return chartSegmentColor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LegendPlacementEnum createLegendPlacementEnumFromString(EDataType eDataType, String initialValue) {
+		LegendPlacementEnum result = LegendPlacementEnum.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertLegendPlacementEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToggleTypeEnum createToggleTypeEnumFromString(EDataType eDataType, String initialValue) {
+		ToggleTypeEnum result = ToggleTypeEnum.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertToggleTypeEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TooltipLocationEnum createTooltipLocationEnumFromString(EDataType eDataType, String initialValue) {
+		TooltipLocationEnum result = TooltipLocationEnum.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertTooltipLocationEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RenderTypeEnum createRenderTypeEnumFromString(EDataType eDataType, String initialValue) {
+		RenderTypeEnum result = RenderTypeEnum.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertRenderTypeEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InternalEObject createInternalEObjectFromString(EDataType eDataType, String initialValue) {
+		return (InternalEObject)super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertInternalEObjectToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDSLPackage getChartDSLPackage() {
+		return (ChartDSLPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ChartDSLPackage getPackage() {
+		return ChartDSLPackage.eINSTANCE;
+	}
+
+} //ChartDSLFactoryImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java
new file mode 100644
index 0000000..69d13d4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java
@@ -0,0 +1,1375 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartAxis;
+import org.eclipse.osbp.xtext.chart.ChartBar;
+import org.eclipse.osbp.xtext.chart.ChartBase;
+import org.eclipse.osbp.xtext.chart.ChartBubble;
+import org.eclipse.osbp.xtext.chart.ChartDSLFactory;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.chart.ChartDonut;
+import org.eclipse.osbp.xtext.chart.ChartElement;
+import org.eclipse.osbp.xtext.chart.ChartGauge;
+import org.eclipse.osbp.xtext.chart.ChartHighlighter;
+import org.eclipse.osbp.xtext.chart.ChartInterval;
+import org.eclipse.osbp.xtext.chart.ChartLazyResolver;
+import org.eclipse.osbp.xtext.chart.ChartLegend;
+import org.eclipse.osbp.xtext.chart.ChartLine;
+import org.eclipse.osbp.xtext.chart.ChartModel;
+import org.eclipse.osbp.xtext.chart.ChartNumberInterval;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.chart.ChartPie;
+import org.eclipse.osbp.xtext.chart.ChartRangeElement;
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.osbp.xtext.chart.LegendPlacementEnum;
+import org.eclipse.osbp.xtext.chart.RenderTypeEnum;
+import org.eclipse.osbp.xtext.chart.ToggleTypeEnum;
+import org.eclipse.osbp.xtext.chart.TooltipLocationEnum;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ChartDSLPackageImpl extends EPackageImpl implements ChartDSLPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartLazyResolverEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartBaseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartPackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartOptionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartBarEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartLineEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartPieEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartDonutEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartBubbleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartGaugeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartTreeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartIntervalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartNumberIntervalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartDatamartEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartLegendEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartHighlighterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartAxisEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartRangeElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chartSegmentColorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum legendPlacementEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum toggleTypeEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum tooltipLocationEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum renderTypeEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType internalEObjectEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ChartDSLPackageImpl() {
+		super(eNS_URI, ChartDSLFactory.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 ChartDSLPackage#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 ChartDSLPackage init() {
+		if (isInited) return (ChartDSLPackage)EPackage.Registry.INSTANCE.getEPackage(ChartDSLPackage.eNS_URI);
+
+		// Obtain or create and register package
+		ChartDSLPackageImpl theChartDSLPackage = (ChartDSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ChartDSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ChartDSLPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		DatamartDSLPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theChartDSLPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theChartDSLPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theChartDSLPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ChartDSLPackage.eNS_URI, theChartDSLPackage);
+		return theChartDSLPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartModel() {
+		return chartModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartModel_Packages() {
+		return (EReference)chartModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartLazyResolver() {
+		return chartLazyResolverEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getChartLazyResolver__EResolveProxy__InternalEObject() {
+		return chartLazyResolverEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartBase() {
+		return chartBaseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBase_Name() {
+		return (EAttribute)chartBaseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartPackage() {
+		return chartPackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartPackage_Charts() {
+		return (EReference)chartPackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChart() {
+		return chartEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChart_Description() {
+		return (EAttribute)chartEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChart_DescriptionValue() {
+		return (EAttribute)chartEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChart_Polling() {
+		return (EAttribute)chartEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChart_PollingTime() {
+		return (EAttribute)chartEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChart_Charttype() {
+		return (EReference)chartEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChart_Source() {
+		return (EReference)chartEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartOption() {
+		return chartOptionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartBar() {
+		return chartBarEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBar_Shadow() {
+		return (EAttribute)chartBarEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBar_Animated() {
+		return (EAttribute)chartBarEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBar_Swapped() {
+		return (EAttribute)chartBarEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBar_Stacked() {
+		return (EAttribute)chartBarEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartLine() {
+		return chartLineEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_Animated() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_ShowMarker() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_TrendLine() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_Zoom() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_Cursor() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_Tooltip() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_FillToZero() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLine_FillArea() {
+		return (EAttribute)chartLineEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartPie() {
+		return chartPieEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartPie_Empty() {
+		return (EAttribute)chartPieEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartDonut() {
+		return chartDonutEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartBubble() {
+		return chartBubbleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBubble_Multiplier() {
+		return (EAttribute)chartBubbleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBubble_MultiplierValue() {
+		return (EAttribute)chartBubbleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBubble_Gradient() {
+		return (EAttribute)chartBubbleEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartBubble_Transparent() {
+		return (EAttribute)chartBubbleEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartGauge() {
+		return chartGaugeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartGauge_Labeled() {
+		return (EAttribute)chartGaugeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartGauge_LabelValue() {
+		return (EAttribute)chartGaugeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartGauge_HasTicks() {
+		return (EAttribute)chartGaugeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartGauge_MinValue() {
+		return (EAttribute)chartGaugeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartGauge_MaxValue() {
+		return (EAttribute)chartGaugeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartGauge_HasIntervals() {
+		return (EAttribute)chartGaugeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartGauge_Intervals() {
+		return (EReference)chartGaugeEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartTree() {
+		return chartTreeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartTree_Map() {
+		return (EAttribute)chartTreeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartTree_Collapsible() {
+		return (EAttribute)chartTreeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartInterval() {
+		return chartIntervalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartNumberInterval() {
+		return chartNumberIntervalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartNumberInterval_NumberIntervalValue() {
+		return (EAttribute)chartNumberIntervalEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartNumberInterval_NumberRange() {
+		return (EReference)chartNumberIntervalEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartDatamart() {
+		return chartDatamartEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartDatamart_DatamartRef() {
+		return (EReference)chartDatamartEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartDatamart_Elements() {
+		return (EReference)chartDatamartEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartElement() {
+		return chartElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartLegend() {
+		return chartLegendEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLegend_Placement() {
+		return (EAttribute)chartLegendEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLegend_Toggle() {
+		return (EAttribute)chartLegendEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLegend_Replot() {
+		return (EAttribute)chartLegendEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartLegend_ToggleType() {
+		return (EAttribute)chartLegendEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartHighlighter() {
+		return chartHighlighterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartHighlighter_Location() {
+		return (EAttribute)chartHighlighterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartHighlighter_TooltipAlways() {
+		return (EAttribute)chartHighlighterEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartHighlighter_InsideChart() {
+		return (EAttribute)chartHighlighterEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartAxis() {
+		return chartAxisEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getChartAxis_Axis() {
+		return (EReference)chartAxisEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartAxis_RenderType() {
+		return (EAttribute)chartAxisEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartAxis_ShortLabel() {
+		return (EAttribute)chartAxisEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartAxis_Angle() {
+		return (EAttribute)chartAxisEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartRangeElement() {
+		return chartRangeElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChartSegmentColor() {
+		return chartSegmentColorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChartSegmentColor_Rgb() {
+		return (EAttribute)chartSegmentColorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLegendPlacementEnum() {
+		return legendPlacementEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getToggleTypeEnum() {
+		return toggleTypeEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getTooltipLocationEnum() {
+		return tooltipLocationEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getRenderTypeEnum() {
+		return renderTypeEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDSLFactory getChartDSLFactory() {
+		return (ChartDSLFactory)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
+		chartModelEClass = createEClass(CHART_MODEL);
+		createEReference(chartModelEClass, CHART_MODEL__PACKAGES);
+
+		chartLazyResolverEClass = createEClass(CHART_LAZY_RESOLVER);
+		createEOperation(chartLazyResolverEClass, CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
+
+		chartBaseEClass = createEClass(CHART_BASE);
+		createEAttribute(chartBaseEClass, CHART_BASE__NAME);
+
+		chartPackageEClass = createEClass(CHART_PACKAGE);
+		createEReference(chartPackageEClass, CHART_PACKAGE__CHARTS);
+
+		chartEClass = createEClass(CHART);
+		createEAttribute(chartEClass, CHART__DESCRIPTION);
+		createEAttribute(chartEClass, CHART__DESCRIPTION_VALUE);
+		createEAttribute(chartEClass, CHART__POLLING);
+		createEAttribute(chartEClass, CHART__POLLING_TIME);
+		createEReference(chartEClass, CHART__CHARTTYPE);
+		createEReference(chartEClass, CHART__SOURCE);
+
+		chartOptionEClass = createEClass(CHART_OPTION);
+
+		chartBarEClass = createEClass(CHART_BAR);
+		createEAttribute(chartBarEClass, CHART_BAR__SHADOW);
+		createEAttribute(chartBarEClass, CHART_BAR__ANIMATED);
+		createEAttribute(chartBarEClass, CHART_BAR__SWAPPED);
+		createEAttribute(chartBarEClass, CHART_BAR__STACKED);
+
+		chartLineEClass = createEClass(CHART_LINE);
+		createEAttribute(chartLineEClass, CHART_LINE__ANIMATED);
+		createEAttribute(chartLineEClass, CHART_LINE__SHOW_MARKER);
+		createEAttribute(chartLineEClass, CHART_LINE__TREND_LINE);
+		createEAttribute(chartLineEClass, CHART_LINE__ZOOM);
+		createEAttribute(chartLineEClass, CHART_LINE__CURSOR);
+		createEAttribute(chartLineEClass, CHART_LINE__TOOLTIP);
+		createEAttribute(chartLineEClass, CHART_LINE__FILL_TO_ZERO);
+		createEAttribute(chartLineEClass, CHART_LINE__FILL_AREA);
+
+		chartPieEClass = createEClass(CHART_PIE);
+		createEAttribute(chartPieEClass, CHART_PIE__EMPTY);
+
+		chartDonutEClass = createEClass(CHART_DONUT);
+
+		chartBubbleEClass = createEClass(CHART_BUBBLE);
+		createEAttribute(chartBubbleEClass, CHART_BUBBLE__MULTIPLIER);
+		createEAttribute(chartBubbleEClass, CHART_BUBBLE__MULTIPLIER_VALUE);
+		createEAttribute(chartBubbleEClass, CHART_BUBBLE__GRADIENT);
+		createEAttribute(chartBubbleEClass, CHART_BUBBLE__TRANSPARENT);
+
+		chartGaugeEClass = createEClass(CHART_GAUGE);
+		createEAttribute(chartGaugeEClass, CHART_GAUGE__LABELED);
+		createEAttribute(chartGaugeEClass, CHART_GAUGE__LABEL_VALUE);
+		createEAttribute(chartGaugeEClass, CHART_GAUGE__HAS_TICKS);
+		createEAttribute(chartGaugeEClass, CHART_GAUGE__MIN_VALUE);
+		createEAttribute(chartGaugeEClass, CHART_GAUGE__MAX_VALUE);
+		createEAttribute(chartGaugeEClass, CHART_GAUGE__HAS_INTERVALS);
+		createEReference(chartGaugeEClass, CHART_GAUGE__INTERVALS);
+
+		chartTreeEClass = createEClass(CHART_TREE);
+		createEAttribute(chartTreeEClass, CHART_TREE__MAP);
+		createEAttribute(chartTreeEClass, CHART_TREE__COLLAPSIBLE);
+
+		chartIntervalEClass = createEClass(CHART_INTERVAL);
+
+		chartNumberIntervalEClass = createEClass(CHART_NUMBER_INTERVAL);
+		createEAttribute(chartNumberIntervalEClass, CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE);
+		createEReference(chartNumberIntervalEClass, CHART_NUMBER_INTERVAL__NUMBER_RANGE);
+
+		chartDatamartEClass = createEClass(CHART_DATAMART);
+		createEReference(chartDatamartEClass, CHART_DATAMART__DATAMART_REF);
+		createEReference(chartDatamartEClass, CHART_DATAMART__ELEMENTS);
+
+		chartElementEClass = createEClass(CHART_ELEMENT);
+
+		chartLegendEClass = createEClass(CHART_LEGEND);
+		createEAttribute(chartLegendEClass, CHART_LEGEND__PLACEMENT);
+		createEAttribute(chartLegendEClass, CHART_LEGEND__TOGGLE);
+		createEAttribute(chartLegendEClass, CHART_LEGEND__REPLOT);
+		createEAttribute(chartLegendEClass, CHART_LEGEND__TOGGLE_TYPE);
+
+		chartHighlighterEClass = createEClass(CHART_HIGHLIGHTER);
+		createEAttribute(chartHighlighterEClass, CHART_HIGHLIGHTER__LOCATION);
+		createEAttribute(chartHighlighterEClass, CHART_HIGHLIGHTER__TOOLTIP_ALWAYS);
+		createEAttribute(chartHighlighterEClass, CHART_HIGHLIGHTER__INSIDE_CHART);
+
+		chartAxisEClass = createEClass(CHART_AXIS);
+		createEReference(chartAxisEClass, CHART_AXIS__AXIS);
+		createEAttribute(chartAxisEClass, CHART_AXIS__RENDER_TYPE);
+		createEAttribute(chartAxisEClass, CHART_AXIS__SHORT_LABEL);
+		createEAttribute(chartAxisEClass, CHART_AXIS__ANGLE);
+
+		chartRangeElementEClass = createEClass(CHART_RANGE_ELEMENT);
+
+		chartSegmentColorEClass = createEClass(CHART_SEGMENT_COLOR);
+		createEAttribute(chartSegmentColorEClass, CHART_SEGMENT_COLOR__RGB);
+
+		// Create enums
+		legendPlacementEnumEEnum = createEEnum(LEGEND_PLACEMENT_ENUM);
+		toggleTypeEnumEEnum = createEEnum(TOGGLE_TYPE_ENUM);
+		tooltipLocationEnumEEnum = createEEnum(TOOLTIP_LOCATION_ENUM);
+		renderTypeEnumEEnum = createEEnum(RENDER_TYPE_ENUM);
+
+		// Create data types
+		internalEObjectEDataType = createEDataType(INTERNAL_EOBJECT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		DatamartDSLPackage theDatamartDSLPackage = (DatamartDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DatamartDSLPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		chartBaseEClass.getESuperTypes().add(this.getChartLazyResolver());
+		chartPackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
+		chartEClass.getESuperTypes().add(this.getChartBase());
+		chartOptionEClass.getESuperTypes().add(this.getChartLazyResolver());
+		chartBarEClass.getESuperTypes().add(this.getChartOption());
+		chartLineEClass.getESuperTypes().add(this.getChartOption());
+		chartPieEClass.getESuperTypes().add(this.getChartOption());
+		chartDonutEClass.getESuperTypes().add(this.getChartOption());
+		chartBubbleEClass.getESuperTypes().add(this.getChartOption());
+		chartGaugeEClass.getESuperTypes().add(this.getChartOption());
+		chartTreeEClass.getESuperTypes().add(this.getChartOption());
+		chartIntervalEClass.getESuperTypes().add(this.getChartLazyResolver());
+		chartNumberIntervalEClass.getESuperTypes().add(this.getChartInterval());
+		chartDatamartEClass.getESuperTypes().add(this.getChartLazyResolver());
+		chartElementEClass.getESuperTypes().add(this.getChartLazyResolver());
+		chartLegendEClass.getESuperTypes().add(this.getChartElement());
+		chartHighlighterEClass.getESuperTypes().add(this.getChartElement());
+		chartAxisEClass.getESuperTypes().add(this.getChartElement());
+		chartRangeElementEClass.getESuperTypes().add(this.getChartLazyResolver());
+		chartSegmentColorEClass.getESuperTypes().add(this.getChartRangeElement());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(chartModelEClass, ChartModel.class, "ChartModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getChartModel_Packages(), this.getChartPackage(), null, "packages", null, 0, -1, ChartModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartLazyResolverEClass, ChartLazyResolver.class, "ChartLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = initEOperation(getChartLazyResolver__EResolveProxy__InternalEObject(), theEcorePackage.getEObject(), "eResolveProxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(chartBaseEClass, ChartBase.class, "ChartBase", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartBase_Name(), theEcorePackage.getEString(), "name", null, 0, 1, ChartBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartPackageEClass, ChartPackage.class, "ChartPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getChartPackage_Charts(), this.getChart(), null, "charts", null, 0, -1, ChartPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartEClass, Chart.class, "Chart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChart_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChart_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChart_Polling(), theEcorePackage.getEBoolean(), "polling", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChart_PollingTime(), theEcorePackage.getEInt(), "pollingTime", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChart_Charttype(), this.getChartOption(), null, "charttype", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChart_Source(), this.getChartDatamart(), null, "source", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartOptionEClass, ChartOption.class, "ChartOption", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(chartBarEClass, ChartBar.class, "ChartBar", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartBar_Shadow(), theEcorePackage.getEBoolean(), "shadow", null, 0, 1, ChartBar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartBar_Animated(), theEcorePackage.getEBoolean(), "animated", null, 0, 1, ChartBar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartBar_Swapped(), theEcorePackage.getEBoolean(), "swapped", null, 0, 1, ChartBar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartBar_Stacked(), theEcorePackage.getEBoolean(), "stacked", null, 0, 1, ChartBar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartLineEClass, ChartLine.class, "ChartLine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartLine_Animated(), theEcorePackage.getEBoolean(), "animated", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_ShowMarker(), theEcorePackage.getEBoolean(), "showMarker", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_TrendLine(), theEcorePackage.getEBoolean(), "trendLine", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_Zoom(), theEcorePackage.getEBoolean(), "zoom", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_Cursor(), theEcorePackage.getEBoolean(), "cursor", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_Tooltip(), theEcorePackage.getEBoolean(), "tooltip", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_FillToZero(), theEcorePackage.getEBoolean(), "fillToZero", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLine_FillArea(), theEcorePackage.getEBoolean(), "fillArea", null, 0, 1, ChartLine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartPieEClass, ChartPie.class, "ChartPie", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartPie_Empty(), theEcorePackage.getEBoolean(), "empty", null, 0, 1, ChartPie.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartDonutEClass, ChartDonut.class, "ChartDonut", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(chartBubbleEClass, ChartBubble.class, "ChartBubble", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartBubble_Multiplier(), theEcorePackage.getEBoolean(), "multiplier", null, 0, 1, ChartBubble.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartBubble_MultiplierValue(), theEcorePackage.getEString(), "multiplierValue", null, 0, 1, ChartBubble.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartBubble_Gradient(), theEcorePackage.getEBoolean(), "gradient", null, 0, 1, ChartBubble.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartBubble_Transparent(), theEcorePackage.getEBoolean(), "transparent", null, 0, 1, ChartBubble.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartGaugeEClass, ChartGauge.class, "ChartGauge", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartGauge_Labeled(), theEcorePackage.getEBoolean(), "labeled", null, 0, 1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartGauge_LabelValue(), theEcorePackage.getEString(), "labelValue", null, 0, 1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartGauge_HasTicks(), theEcorePackage.getEBoolean(), "hasTicks", null, 0, 1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartGauge_MinValue(), theEcorePackage.getEInt(), "minValue", null, 0, 1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartGauge_MaxValue(), theEcorePackage.getEInt(), "maxValue", null, 0, 1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartGauge_HasIntervals(), theEcorePackage.getEBoolean(), "hasIntervals", null, 0, 1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChartGauge_Intervals(), this.getChartInterval(), null, "intervals", null, 0, -1, ChartGauge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartTreeEClass, ChartTree.class, "ChartTree", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartTree_Map(), theEcorePackage.getEBoolean(), "map", null, 0, 1, ChartTree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartTree_Collapsible(), theEcorePackage.getEBoolean(), "collapsible", null, 0, 1, ChartTree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartIntervalEClass, ChartInterval.class, "ChartInterval", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(chartNumberIntervalEClass, ChartNumberInterval.class, "ChartNumberInterval", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartNumberInterval_NumberIntervalValue(), theEcorePackage.getEInt(), "numberIntervalValue", null, 0, 1, ChartNumberInterval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChartNumberInterval_NumberRange(), this.getChartRangeElement(), null, "numberRange", null, 0, 1, ChartNumberInterval.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartDatamartEClass, ChartDatamart.class, "ChartDatamart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getChartDatamart_DatamartRef(), theDatamartDSLPackage.getDatamartDefinition(), null, "datamartRef", null, 0, 1, ChartDatamart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getChartDatamart_Elements(), this.getChartElement(), null, "elements", null, 0, -1, ChartDatamart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartElementEClass, ChartElement.class, "ChartElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(chartLegendEClass, ChartLegend.class, "ChartLegend", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartLegend_Placement(), this.getLegendPlacementEnum(), "placement", null, 0, 1, ChartLegend.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLegend_Toggle(), theEcorePackage.getEBoolean(), "toggle", null, 0, 1, ChartLegend.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLegend_Replot(), theEcorePackage.getEBoolean(), "replot", null, 0, 1, ChartLegend.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartLegend_ToggleType(), this.getToggleTypeEnum(), "toggleType", null, 0, 1, ChartLegend.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartHighlighterEClass, ChartHighlighter.class, "ChartHighlighter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartHighlighter_Location(), this.getTooltipLocationEnum(), "location", null, 0, 1, ChartHighlighter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartHighlighter_TooltipAlways(), theEcorePackage.getEBoolean(), "tooltipAlways", null, 0, 1, ChartHighlighter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartHighlighter_InsideChart(), theEcorePackage.getEBoolean(), "insideChart", null, 0, 1, ChartHighlighter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartAxisEClass, ChartAxis.class, "ChartAxis", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getChartAxis_Axis(), theDatamartDSLPackage.getDatamartAxis(), null, "axis", null, 0, 1, ChartAxis.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartAxis_RenderType(), this.getRenderTypeEnum(), "renderType", null, 0, 1, ChartAxis.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartAxis_ShortLabel(), theEcorePackage.getEBoolean(), "shortLabel", null, 0, 1, ChartAxis.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getChartAxis_Angle(), theEcorePackage.getEInt(), "angle", null, 0, 1, ChartAxis.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chartRangeElementEClass, ChartRangeElement.class, "ChartRangeElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(chartSegmentColorEClass, ChartSegmentColor.class, "ChartSegmentColor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChartSegmentColor_Rgb(), theEcorePackage.getEString(), "rgb", null, 0, 1, ChartSegmentColor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(legendPlacementEnumEEnum, LegendPlacementEnum.class, "LegendPlacementEnum");
+		addEEnumLiteral(legendPlacementEnumEEnum, LegendPlacementEnum.INSIDE);
+		addEEnumLiteral(legendPlacementEnumEEnum, LegendPlacementEnum.INSIDE_GRID);
+		addEEnumLiteral(legendPlacementEnumEEnum, LegendPlacementEnum.OUTSIDE);
+		addEEnumLiteral(legendPlacementEnumEEnum, LegendPlacementEnum.OUTSIDE_GRID);
+
+		initEEnum(toggleTypeEnumEEnum, ToggleTypeEnum.class, "ToggleTypeEnum");
+		addEEnumLiteral(toggleTypeEnumEEnum, ToggleTypeEnum.NORMAL);
+		addEEnumLiteral(toggleTypeEnumEEnum, ToggleTypeEnum.SLOW);
+		addEEnumLiteral(toggleTypeEnumEEnum, ToggleTypeEnum.FAST);
+
+		initEEnum(tooltipLocationEnumEEnum, TooltipLocationEnum.class, "TooltipLocationEnum");
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.NORTH);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.NORTH_EAST);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.EAST);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.SOUTH_EAST);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.SOUTH);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.SOUTH_WEST);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.WEST);
+		addEEnumLiteral(tooltipLocationEnumEEnum, TooltipLocationEnum.NORTH_WEST);
+
+		initEEnum(renderTypeEnumEEnum, RenderTypeEnum.class, "RenderTypeEnum");
+		addEEnumLiteral(renderTypeEnumEEnum, RenderTypeEnum.CATEGORY);
+		addEEnumLiteral(renderTypeEnumEEnum, RenderTypeEnum.LINEAR);
+		addEEnumLiteral(renderTypeEnumEEnum, RenderTypeEnum.DATE);
+		addEEnumLiteral(renderTypeEnumEEnum, RenderTypeEnum.LOG);
+		addEEnumLiteral(renderTypeEnumEEnum, RenderTypeEnum.PYRAMID);
+
+		// Initialize data types
+		initEDataType(internalEObjectEDataType, InternalEObject.class, "InternalEObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/emf/2002/Ecore
+		createEcoreAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createEcoreAnnotations() {
+		String source = "http://www.eclipse.org/emf/2002/Ecore";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "rootPackage", "chartdsl"
+		   });
+	}
+
+} //ChartDSLPackageImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java
new file mode 100644
index 0000000..b547021
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java
@@ -0,0 +1,226 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.chart.ChartElement;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Datamart</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl#getDatamartRef <em>Datamart Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartDatamartImpl extends ChartLazyResolverImpl implements ChartDatamart {
+	/**
+	 * The cached value of the '{@link #getDatamartRef() <em>Datamart Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatamartRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartDefinition datamartRef;
+
+	/**
+	 * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ChartElement> elements;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartDatamartImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_DATAMART;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefinition getDatamartRef() {
+		if (datamartRef != null && datamartRef.eIsProxy()) {
+			InternalEObject oldDatamartRef = (InternalEObject)datamartRef;
+			datamartRef = (DatamartDefinition)eResolveProxy(oldDatamartRef);
+			if (datamartRef != oldDatamartRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ChartDSLPackage.CHART_DATAMART__DATAMART_REF, oldDatamartRef, datamartRef));
+			}
+		}
+		return datamartRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefinition basicGetDatamartRef() {
+		return datamartRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDatamartRef(DatamartDefinition newDatamartRef) {
+		DatamartDefinition oldDatamartRef = datamartRef;
+		datamartRef = newDatamartRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_DATAMART__DATAMART_REF, oldDatamartRef, datamartRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ChartElement> getElements() {
+		if (elements == null) {
+			elements = new EObjectContainmentEList<ChartElement>(ChartElement.class, this, ChartDSLPackage.CHART_DATAMART__ELEMENTS);
+		}
+		return elements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_DATAMART__ELEMENTS:
+				return ((InternalEList<?>)getElements()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_DATAMART__DATAMART_REF:
+				if (resolve) return getDatamartRef();
+				return basicGetDatamartRef();
+			case ChartDSLPackage.CHART_DATAMART__ELEMENTS:
+				return getElements();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_DATAMART__DATAMART_REF:
+				setDatamartRef((DatamartDefinition)newValue);
+				return;
+			case ChartDSLPackage.CHART_DATAMART__ELEMENTS:
+				getElements().clear();
+				getElements().addAll((Collection<? extends ChartElement>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_DATAMART__DATAMART_REF:
+				setDatamartRef((DatamartDefinition)null);
+				return;
+			case ChartDSLPackage.CHART_DATAMART__ELEMENTS:
+				getElements().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_DATAMART__DATAMART_REF:
+				return datamartRef != null;
+			case ChartDSLPackage.CHART_DATAMART__ELEMENTS:
+				return elements != null && !elements.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ChartDatamartImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java
new file mode 100644
index 0000000..a96c449
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartDonut;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Donut</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartDonutImpl extends ChartLazyResolverImpl implements ChartDonut {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartDonutImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_DONUT;
+	}
+
+} //ChartDonutImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.java
new file mode 100644
index 0000000..043a331
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.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 (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartGauge;
+import org.eclipse.osbp.xtext.chart.ChartInterval;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Gauge</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#isLabeled <em>Labeled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#getLabelValue <em>Label Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#isHasTicks <em>Has Ticks</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#isHasIntervals <em>Has Intervals</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#getIntervals <em>Intervals</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartGaugeImpl extends ChartLazyResolverImpl implements ChartGauge {
+	/**
+	 * The default value of the '{@link #isLabeled() <em>Labeled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLabeled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LABELED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLabeled() <em>Labeled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLabeled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean labeled = LABELED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLabelValue() <em>Label Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabelValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLabelValue() <em>Label Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabelValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String labelValue = LABEL_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isHasTicks() <em>Has Ticks</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasTicks()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_TICKS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasTicks() <em>Has Ticks</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasTicks()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasTicks = HAS_TICKS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MIN_VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int minValue = MIN_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MAX_VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int maxValue = MAX_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isHasIntervals() <em>Has Intervals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasIntervals()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_INTERVALS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasIntervals() <em>Has Intervals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasIntervals()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasIntervals = HAS_INTERVALS_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getIntervals() <em>Intervals</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIntervals()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ChartInterval> intervals;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartGaugeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_GAUGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLabeled() {
+		return labeled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabeled(boolean newLabeled) {
+		boolean oldLabeled = labeled;
+		labeled = newLabeled;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_GAUGE__LABELED, oldLabeled, labeled));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLabelValue() {
+		return labelValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLabelValue(String newLabelValue) {
+		String oldLabelValue = labelValue;
+		labelValue = newLabelValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_GAUGE__LABEL_VALUE, oldLabelValue, labelValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasTicks() {
+		return hasTicks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasTicks(boolean newHasTicks) {
+		boolean oldHasTicks = hasTicks;
+		hasTicks = newHasTicks;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_GAUGE__HAS_TICKS, oldHasTicks, hasTicks));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMinValue() {
+		return minValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinValue(int newMinValue) {
+		int oldMinValue = minValue;
+		minValue = newMinValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_GAUGE__MIN_VALUE, oldMinValue, minValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMaxValue() {
+		return maxValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMaxValue(int newMaxValue) {
+		int oldMaxValue = maxValue;
+		maxValue = newMaxValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_GAUGE__MAX_VALUE, oldMaxValue, maxValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasIntervals() {
+		return hasIntervals;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasIntervals(boolean newHasIntervals) {
+		boolean oldHasIntervals = hasIntervals;
+		hasIntervals = newHasIntervals;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_GAUGE__HAS_INTERVALS, oldHasIntervals, hasIntervals));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ChartInterval> getIntervals() {
+		if (intervals == null) {
+			intervals = new EObjectContainmentEList<ChartInterval>(ChartInterval.class, this, ChartDSLPackage.CHART_GAUGE__INTERVALS);
+		}
+		return intervals;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_GAUGE__INTERVALS:
+				return ((InternalEList<?>)getIntervals()).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 ChartDSLPackage.CHART_GAUGE__LABELED:
+				return isLabeled();
+			case ChartDSLPackage.CHART_GAUGE__LABEL_VALUE:
+				return getLabelValue();
+			case ChartDSLPackage.CHART_GAUGE__HAS_TICKS:
+				return isHasTicks();
+			case ChartDSLPackage.CHART_GAUGE__MIN_VALUE:
+				return getMinValue();
+			case ChartDSLPackage.CHART_GAUGE__MAX_VALUE:
+				return getMaxValue();
+			case ChartDSLPackage.CHART_GAUGE__HAS_INTERVALS:
+				return isHasIntervals();
+			case ChartDSLPackage.CHART_GAUGE__INTERVALS:
+				return getIntervals();
+		}
+		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 ChartDSLPackage.CHART_GAUGE__LABELED:
+				setLabeled((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__LABEL_VALUE:
+				setLabelValue((String)newValue);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__HAS_TICKS:
+				setHasTicks((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__MIN_VALUE:
+				setMinValue((Integer)newValue);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__MAX_VALUE:
+				setMaxValue((Integer)newValue);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__HAS_INTERVALS:
+				setHasIntervals((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__INTERVALS:
+				getIntervals().clear();
+				getIntervals().addAll((Collection<? extends ChartInterval>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_GAUGE__LABELED:
+				setLabeled(LABELED_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__LABEL_VALUE:
+				setLabelValue(LABEL_VALUE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__HAS_TICKS:
+				setHasTicks(HAS_TICKS_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__MIN_VALUE:
+				setMinValue(MIN_VALUE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__MAX_VALUE:
+				setMaxValue(MAX_VALUE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__HAS_INTERVALS:
+				setHasIntervals(HAS_INTERVALS_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_GAUGE__INTERVALS:
+				getIntervals().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_GAUGE__LABELED:
+				return labeled != LABELED_EDEFAULT;
+			case ChartDSLPackage.CHART_GAUGE__LABEL_VALUE:
+				return LABEL_VALUE_EDEFAULT == null ? labelValue != null : !LABEL_VALUE_EDEFAULT.equals(labelValue);
+			case ChartDSLPackage.CHART_GAUGE__HAS_TICKS:
+				return hasTicks != HAS_TICKS_EDEFAULT;
+			case ChartDSLPackage.CHART_GAUGE__MIN_VALUE:
+				return minValue != MIN_VALUE_EDEFAULT;
+			case ChartDSLPackage.CHART_GAUGE__MAX_VALUE:
+				return maxValue != MAX_VALUE_EDEFAULT;
+			case ChartDSLPackage.CHART_GAUGE__HAS_INTERVALS:
+				return hasIntervals != HAS_INTERVALS_EDEFAULT;
+			case ChartDSLPackage.CHART_GAUGE__INTERVALS:
+				return intervals != null && !intervals.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(" (labeled: ");
+		result.append(labeled);
+		result.append(", labelValue: ");
+		result.append(labelValue);
+		result.append(", hasTicks: ");
+		result.append(hasTicks);
+		result.append(", minValue: ");
+		result.append(minValue);
+		result.append(", maxValue: ");
+		result.append(maxValue);
+		result.append(", hasIntervals: ");
+		result.append(hasIntervals);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartGaugeImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.java
new file mode 100644
index 0000000..b095b8b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.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 (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartHighlighter;
+import org.eclipse.osbp.xtext.chart.TooltipLocationEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Highlighter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl#getLocation <em>Location</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl#isTooltipAlways <em>Tooltip Always</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl#isInsideChart <em>Inside Chart</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartHighlighterImpl extends ChartLazyResolverImpl implements ChartHighlighter {
+	/**
+	 * The default value of the '{@link #getLocation() <em>Location</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLocation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TooltipLocationEnum LOCATION_EDEFAULT = TooltipLocationEnum.NORTH;
+
+	/**
+	 * The cached value of the '{@link #getLocation() <em>Location</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLocation()
+	 * @generated
+	 * @ordered
+	 */
+	protected TooltipLocationEnum location = LOCATION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTooltipAlways() <em>Tooltip Always</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTooltipAlways()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TOOLTIP_ALWAYS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTooltipAlways() <em>Tooltip Always</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTooltipAlways()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean tooltipAlways = TOOLTIP_ALWAYS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isInsideChart() <em>Inside Chart</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInsideChart()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean INSIDE_CHART_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isInsideChart() <em>Inside Chart</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInsideChart()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean insideChart = INSIDE_CHART_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartHighlighterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_HIGHLIGHTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TooltipLocationEnum getLocation() {
+		return location;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLocation(TooltipLocationEnum newLocation) {
+		TooltipLocationEnum oldLocation = location;
+		location = newLocation == null ? LOCATION_EDEFAULT : newLocation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_HIGHLIGHTER__LOCATION, oldLocation, location));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTooltipAlways() {
+		return tooltipAlways;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTooltipAlways(boolean newTooltipAlways) {
+		boolean oldTooltipAlways = tooltipAlways;
+		tooltipAlways = newTooltipAlways;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_HIGHLIGHTER__TOOLTIP_ALWAYS, oldTooltipAlways, tooltipAlways));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isInsideChart() {
+		return insideChart;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInsideChart(boolean newInsideChart) {
+		boolean oldInsideChart = insideChart;
+		insideChart = newInsideChart;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_HIGHLIGHTER__INSIDE_CHART, oldInsideChart, insideChart));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_HIGHLIGHTER__LOCATION:
+				return getLocation();
+			case ChartDSLPackage.CHART_HIGHLIGHTER__TOOLTIP_ALWAYS:
+				return isTooltipAlways();
+			case ChartDSLPackage.CHART_HIGHLIGHTER__INSIDE_CHART:
+				return isInsideChart();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_HIGHLIGHTER__LOCATION:
+				setLocation((TooltipLocationEnum)newValue);
+				return;
+			case ChartDSLPackage.CHART_HIGHLIGHTER__TOOLTIP_ALWAYS:
+				setTooltipAlways((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_HIGHLIGHTER__INSIDE_CHART:
+				setInsideChart((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_HIGHLIGHTER__LOCATION:
+				setLocation(LOCATION_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_HIGHLIGHTER__TOOLTIP_ALWAYS:
+				setTooltipAlways(TOOLTIP_ALWAYS_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_HIGHLIGHTER__INSIDE_CHART:
+				setInsideChart(INSIDE_CHART_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_HIGHLIGHTER__LOCATION:
+				return location != LOCATION_EDEFAULT;
+			case ChartDSLPackage.CHART_HIGHLIGHTER__TOOLTIP_ALWAYS:
+				return tooltipAlways != TOOLTIP_ALWAYS_EDEFAULT;
+			case ChartDSLPackage.CHART_HIGHLIGHTER__INSIDE_CHART:
+				return insideChart != INSIDE_CHART_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (location: ");
+		result.append(location);
+		result.append(", tooltipAlways: ");
+		result.append(tooltipAlways);
+		result.append(", insideChart: ");
+		result.append(insideChart);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartHighlighterImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java
new file mode 100644
index 0000000..1491ffa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java
@@ -0,0 +1,483 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#isDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getDescriptionValue <em>Description Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#isPolling <em>Polling</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getPollingTime <em>Polling Time</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getCharttype <em>Charttype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartImpl extends ChartBaseImpl implements Chart {
+	/**
+	 * The default value of the '{@link #isDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DESCRIPTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDescriptionValue() <em>Description Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescriptionValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDescriptionValue() <em>Description Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescriptionValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String descriptionValue = DESCRIPTION_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isPolling() <em>Polling</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPolling()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean POLLING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isPolling() <em>Polling</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPolling()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean polling = POLLING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPollingTime() <em>Polling Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPollingTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int POLLING_TIME_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getPollingTime() <em>Polling Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPollingTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected int pollingTime = POLLING_TIME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCharttype() <em>Charttype</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCharttype()
+	 * @generated
+	 * @ordered
+	 */
+	protected ChartOption charttype;
+
+	/**
+	 * The cached value of the '{@link #getSource() <em>Source</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected ChartDatamart source;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDescription(boolean newDescription) {
+		boolean oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__DESCRIPTION, oldDescription, description));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDescriptionValue() {
+		return descriptionValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDescriptionValue(String newDescriptionValue) {
+		String oldDescriptionValue = descriptionValue;
+		descriptionValue = newDescriptionValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__DESCRIPTION_VALUE, oldDescriptionValue, descriptionValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isPolling() {
+		return polling;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPolling(boolean newPolling) {
+		boolean oldPolling = polling;
+		polling = newPolling;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__POLLING, oldPolling, polling));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getPollingTime() {
+		return pollingTime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPollingTime(int newPollingTime) {
+		int oldPollingTime = pollingTime;
+		pollingTime = newPollingTime;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__POLLING_TIME, oldPollingTime, pollingTime));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartOption getCharttype() {
+		return charttype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCharttype(ChartOption newCharttype, NotificationChain msgs) {
+		ChartOption oldCharttype = charttype;
+		charttype = newCharttype;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__CHARTTYPE, oldCharttype, newCharttype);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCharttype(ChartOption newCharttype) {
+		if (newCharttype != charttype) {
+			NotificationChain msgs = null;
+			if (charttype != null)
+				msgs = ((InternalEObject)charttype).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART__CHARTTYPE, null, msgs);
+			if (newCharttype != null)
+				msgs = ((InternalEObject)newCharttype).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART__CHARTTYPE, null, msgs);
+			msgs = basicSetCharttype(newCharttype, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__CHARTTYPE, newCharttype, newCharttype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDatamart getSource() {
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSource(ChartDatamart newSource, NotificationChain msgs) {
+		ChartDatamart oldSource = source;
+		source = newSource;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__SOURCE, oldSource, newSource);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSource(ChartDatamart newSource) {
+		if (newSource != source) {
+			NotificationChain msgs = null;
+			if (source != null)
+				msgs = ((InternalEObject)source).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART__SOURCE, null, msgs);
+			if (newSource != null)
+				msgs = ((InternalEObject)newSource).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART__SOURCE, null, msgs);
+			msgs = basicSetSource(newSource, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__SOURCE, newSource, newSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART__CHARTTYPE:
+				return basicSetCharttype(null, msgs);
+			case ChartDSLPackage.CHART__SOURCE:
+				return basicSetSource(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 ChartDSLPackage.CHART__DESCRIPTION:
+				return isDescription();
+			case ChartDSLPackage.CHART__DESCRIPTION_VALUE:
+				return getDescriptionValue();
+			case ChartDSLPackage.CHART__POLLING:
+				return isPolling();
+			case ChartDSLPackage.CHART__POLLING_TIME:
+				return getPollingTime();
+			case ChartDSLPackage.CHART__CHARTTYPE:
+				return getCharttype();
+			case ChartDSLPackage.CHART__SOURCE:
+				return getSource();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART__DESCRIPTION:
+				setDescription((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART__DESCRIPTION_VALUE:
+				setDescriptionValue((String)newValue);
+				return;
+			case ChartDSLPackage.CHART__POLLING:
+				setPolling((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART__POLLING_TIME:
+				setPollingTime((Integer)newValue);
+				return;
+			case ChartDSLPackage.CHART__CHARTTYPE:
+				setCharttype((ChartOption)newValue);
+				return;
+			case ChartDSLPackage.CHART__SOURCE:
+				setSource((ChartDatamart)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART__DESCRIPTION_VALUE:
+				setDescriptionValue(DESCRIPTION_VALUE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART__POLLING:
+				setPolling(POLLING_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART__POLLING_TIME:
+				setPollingTime(POLLING_TIME_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART__CHARTTYPE:
+				setCharttype((ChartOption)null);
+				return;
+			case ChartDSLPackage.CHART__SOURCE:
+				setSource((ChartDatamart)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART__DESCRIPTION:
+				return description != DESCRIPTION_EDEFAULT;
+			case ChartDSLPackage.CHART__DESCRIPTION_VALUE:
+				return DESCRIPTION_VALUE_EDEFAULT == null ? descriptionValue != null : !DESCRIPTION_VALUE_EDEFAULT.equals(descriptionValue);
+			case ChartDSLPackage.CHART__POLLING:
+				return polling != POLLING_EDEFAULT;
+			case ChartDSLPackage.CHART__POLLING_TIME:
+				return pollingTime != POLLING_TIME_EDEFAULT;
+			case ChartDSLPackage.CHART__CHARTTYPE:
+				return charttype != null;
+			case ChartDSLPackage.CHART__SOURCE:
+				return source != 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(" (description: ");
+		result.append(description);
+		result.append(", descriptionValue: ");
+		result.append(descriptionValue);
+		result.append(", polling: ");
+		result.append(polling);
+		result.append(", pollingTime: ");
+		result.append(pollingTime);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java
new file mode 100644
index 0000000..6474dd6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartLazyResolverImpl extends MinimalEObjectImpl.Container implements ChartLazyResolver {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartLazyResolverImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_LAZY_RESOLVER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject eResolveProxy(final InternalEObject proxy) {
+		Resource _eResource = this.eResource();
+		ResourceSet _resourceSet = _eResource.getResourceSet();
+		return EcoreUtil3.resolve(proxy, _resourceSet);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case ChartDSLPackage.CHART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT:
+				return eResolveProxy((InternalEObject)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //ChartLazyResolverImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java
new file mode 100644
index 0000000..a1086e7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java
@@ -0,0 +1,337 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartLegend;
+import org.eclipse.osbp.xtext.chart.LegendPlacementEnum;
+import org.eclipse.osbp.xtext.chart.ToggleTypeEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Legend</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#getPlacement <em>Placement</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#isToggle <em>Toggle</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#isReplot <em>Replot</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#getToggleType <em>Toggle Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartLegendImpl extends ChartLazyResolverImpl implements ChartLegend {
+	/**
+	 * The default value of the '{@link #getPlacement() <em>Placement</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPlacement()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LegendPlacementEnum PLACEMENT_EDEFAULT = LegendPlacementEnum.INSIDE;
+
+	/**
+	 * The cached value of the '{@link #getPlacement() <em>Placement</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPlacement()
+	 * @generated
+	 * @ordered
+	 */
+	protected LegendPlacementEnum placement = PLACEMENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isToggle() <em>Toggle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isToggle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TOGGLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isToggle() <em>Toggle</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isToggle()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean toggle = TOGGLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isReplot() <em>Replot</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReplot()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean REPLOT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReplot() <em>Replot</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReplot()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean replot = REPLOT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getToggleType() <em>Toggle Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getToggleType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ToggleTypeEnum TOGGLE_TYPE_EDEFAULT = ToggleTypeEnum.NORMAL;
+
+	/**
+	 * The cached value of the '{@link #getToggleType() <em>Toggle Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getToggleType()
+	 * @generated
+	 * @ordered
+	 */
+	protected ToggleTypeEnum toggleType = TOGGLE_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartLegendImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_LEGEND;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LegendPlacementEnum getPlacement() {
+		return placement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPlacement(LegendPlacementEnum newPlacement) {
+		LegendPlacementEnum oldPlacement = placement;
+		placement = newPlacement == null ? PLACEMENT_EDEFAULT : newPlacement;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LEGEND__PLACEMENT, oldPlacement, placement));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isToggle() {
+		return toggle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setToggle(boolean newToggle) {
+		boolean oldToggle = toggle;
+		toggle = newToggle;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LEGEND__TOGGLE, oldToggle, toggle));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isReplot() {
+		return replot;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReplot(boolean newReplot) {
+		boolean oldReplot = replot;
+		replot = newReplot;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LEGEND__REPLOT, oldReplot, replot));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ToggleTypeEnum getToggleType() {
+		return toggleType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setToggleType(ToggleTypeEnum newToggleType) {
+		ToggleTypeEnum oldToggleType = toggleType;
+		toggleType = newToggleType == null ? TOGGLE_TYPE_EDEFAULT : newToggleType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LEGEND__TOGGLE_TYPE, oldToggleType, toggleType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LEGEND__PLACEMENT:
+				return getPlacement();
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE:
+				return isToggle();
+			case ChartDSLPackage.CHART_LEGEND__REPLOT:
+				return isReplot();
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE_TYPE:
+				return getToggleType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LEGEND__PLACEMENT:
+				setPlacement((LegendPlacementEnum)newValue);
+				return;
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE:
+				setToggle((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LEGEND__REPLOT:
+				setReplot((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE_TYPE:
+				setToggleType((ToggleTypeEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LEGEND__PLACEMENT:
+				setPlacement(PLACEMENT_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE:
+				setToggle(TOGGLE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LEGEND__REPLOT:
+				setReplot(REPLOT_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE_TYPE:
+				setToggleType(TOGGLE_TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LEGEND__PLACEMENT:
+				return placement != PLACEMENT_EDEFAULT;
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE:
+				return toggle != TOGGLE_EDEFAULT;
+			case ChartDSLPackage.CHART_LEGEND__REPLOT:
+				return replot != REPLOT_EDEFAULT;
+			case ChartDSLPackage.CHART_LEGEND__TOGGLE_TYPE:
+				return toggleType != TOGGLE_TYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (placement: ");
+		result.append(placement);
+		result.append(", toggle: ");
+		result.append(toggle);
+		result.append(", replot: ");
+		result.append(replot);
+		result.append(", toggleType: ");
+		result.append(toggleType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartLegendImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java
new file mode 100644
index 0000000..674909d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java
@@ -0,0 +1,551 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartLine;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Line</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isAnimated <em>Animated</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isShowMarker <em>Show Marker</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isTrendLine <em>Trend Line</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isZoom <em>Zoom</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isCursor <em>Cursor</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isTooltip <em>Tooltip</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isFillToZero <em>Fill To Zero</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isFillArea <em>Fill Area</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartLineImpl extends ChartLazyResolverImpl implements ChartLine {
+	/**
+	 * The default value of the '{@link #isAnimated() <em>Animated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAnimated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ANIMATED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAnimated() <em>Animated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAnimated()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean animated = ANIMATED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isShowMarker() <em>Show Marker</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShowMarker()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SHOW_MARKER_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isShowMarker() <em>Show Marker</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isShowMarker()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean showMarker = SHOW_MARKER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTrendLine() <em>Trend Line</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTrendLine()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TREND_LINE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTrendLine() <em>Trend Line</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTrendLine()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean trendLine = TREND_LINE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isZoom() <em>Zoom</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isZoom()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ZOOM_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isZoom() <em>Zoom</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isZoom()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean zoom = ZOOM_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCursor() <em>Cursor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCursor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CURSOR_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCursor() <em>Cursor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCursor()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cursor = CURSOR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTooltip() <em>Tooltip</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTooltip()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TOOLTIP_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTooltip() <em>Tooltip</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTooltip()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean tooltip = TOOLTIP_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isFillToZero() <em>Fill To Zero</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFillToZero()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FILL_TO_ZERO_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFillToZero() <em>Fill To Zero</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFillToZero()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean fillToZero = FILL_TO_ZERO_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isFillArea() <em>Fill Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFillArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FILL_AREA_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFillArea() <em>Fill Area</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFillArea()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean fillArea = FILL_AREA_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartLineImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_LINE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAnimated() {
+		return animated;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnimated(boolean newAnimated) {
+		boolean oldAnimated = animated;
+		animated = newAnimated;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__ANIMATED, oldAnimated, animated));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isShowMarker() {
+		return showMarker;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setShowMarker(boolean newShowMarker) {
+		boolean oldShowMarker = showMarker;
+		showMarker = newShowMarker;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__SHOW_MARKER, oldShowMarker, showMarker));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTrendLine() {
+		return trendLine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTrendLine(boolean newTrendLine) {
+		boolean oldTrendLine = trendLine;
+		trendLine = newTrendLine;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__TREND_LINE, oldTrendLine, trendLine));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isZoom() {
+		return zoom;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setZoom(boolean newZoom) {
+		boolean oldZoom = zoom;
+		zoom = newZoom;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__ZOOM, oldZoom, zoom));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCursor() {
+		return cursor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCursor(boolean newCursor) {
+		boolean oldCursor = cursor;
+		cursor = newCursor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__CURSOR, oldCursor, cursor));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTooltip() {
+		return tooltip;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTooltip(boolean newTooltip) {
+		boolean oldTooltip = tooltip;
+		tooltip = newTooltip;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__TOOLTIP, oldTooltip, tooltip));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isFillToZero() {
+		return fillToZero;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFillToZero(boolean newFillToZero) {
+		boolean oldFillToZero = fillToZero;
+		fillToZero = newFillToZero;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__FILL_TO_ZERO, oldFillToZero, fillToZero));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isFillArea() {
+		return fillArea;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFillArea(boolean newFillArea) {
+		boolean oldFillArea = fillArea;
+		fillArea = newFillArea;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_LINE__FILL_AREA, oldFillArea, fillArea));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LINE__ANIMATED:
+				return isAnimated();
+			case ChartDSLPackage.CHART_LINE__SHOW_MARKER:
+				return isShowMarker();
+			case ChartDSLPackage.CHART_LINE__TREND_LINE:
+				return isTrendLine();
+			case ChartDSLPackage.CHART_LINE__ZOOM:
+				return isZoom();
+			case ChartDSLPackage.CHART_LINE__CURSOR:
+				return isCursor();
+			case ChartDSLPackage.CHART_LINE__TOOLTIP:
+				return isTooltip();
+			case ChartDSLPackage.CHART_LINE__FILL_TO_ZERO:
+				return isFillToZero();
+			case ChartDSLPackage.CHART_LINE__FILL_AREA:
+				return isFillArea();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LINE__ANIMATED:
+				setAnimated((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__SHOW_MARKER:
+				setShowMarker((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__TREND_LINE:
+				setTrendLine((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__ZOOM:
+				setZoom((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__CURSOR:
+				setCursor((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__TOOLTIP:
+				setTooltip((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__FILL_TO_ZERO:
+				setFillToZero((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_LINE__FILL_AREA:
+				setFillArea((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LINE__ANIMATED:
+				setAnimated(ANIMATED_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__SHOW_MARKER:
+				setShowMarker(SHOW_MARKER_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__TREND_LINE:
+				setTrendLine(TREND_LINE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__ZOOM:
+				setZoom(ZOOM_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__CURSOR:
+				setCursor(CURSOR_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__TOOLTIP:
+				setTooltip(TOOLTIP_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__FILL_TO_ZERO:
+				setFillToZero(FILL_TO_ZERO_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_LINE__FILL_AREA:
+				setFillArea(FILL_AREA_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_LINE__ANIMATED:
+				return animated != ANIMATED_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__SHOW_MARKER:
+				return showMarker != SHOW_MARKER_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__TREND_LINE:
+				return trendLine != TREND_LINE_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__ZOOM:
+				return zoom != ZOOM_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__CURSOR:
+				return cursor != CURSOR_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__TOOLTIP:
+				return tooltip != TOOLTIP_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__FILL_TO_ZERO:
+				return fillToZero != FILL_TO_ZERO_EDEFAULT;
+			case ChartDSLPackage.CHART_LINE__FILL_AREA:
+				return fillArea != FILL_AREA_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (animated: ");
+		result.append(animated);
+		result.append(", showMarker: ");
+		result.append(showMarker);
+		result.append(", trendLine: ");
+		result.append(trendLine);
+		result.append(", zoom: ");
+		result.append(zoom);
+		result.append(", cursor: ");
+		result.append(cursor);
+		result.append(", tooltip: ");
+		result.append(tooltip);
+		result.append(", fillToZero: ");
+		result.append(fillToZero);
+		result.append(", fillArea: ");
+		result.append(fillArea);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartLineImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java
new file mode 100644
index 0000000..5668d93
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartModel;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartModelImpl extends MinimalEObjectImpl.Container implements ChartModel {
+	/**
+	 * The cached value of the '{@link #getPackages() <em>Packages</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPackages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ChartPackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ChartPackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<ChartPackage>(ChartPackage.class, this, ChartDSLPackage.CHART_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__PACKAGES:
+				return ((InternalEList<?>)getPackages()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__PACKAGES:
+				return getPackages();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends ChartPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ChartModelImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java
new file mode 100644
index 0000000..8078f8f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java
@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartNumberInterval;
+import org.eclipse.osbp.xtext.chart.ChartRangeElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Number Interval</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl#getNumberIntervalValue <em>Number Interval Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl#getNumberRange <em>Number Range</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartNumberIntervalImpl extends ChartLazyResolverImpl implements ChartNumberInterval {
+	/**
+	 * The default value of the '{@link #getNumberIntervalValue() <em>Number Interval Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberIntervalValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUMBER_INTERVAL_VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNumberIntervalValue() <em>Number Interval Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberIntervalValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int numberIntervalValue = NUMBER_INTERVAL_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getNumberRange() <em>Number Range</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected ChartRangeElement numberRange;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartNumberIntervalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getNumberIntervalValue() {
+		return numberIntervalValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNumberIntervalValue(int newNumberIntervalValue) {
+		int oldNumberIntervalValue = numberIntervalValue;
+		numberIntervalValue = newNumberIntervalValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE, oldNumberIntervalValue, numberIntervalValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartRangeElement getNumberRange() {
+		return numberRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetNumberRange(ChartRangeElement newNumberRange, NotificationChain msgs) {
+		ChartRangeElement oldNumberRange = numberRange;
+		numberRange = newNumberRange;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE, oldNumberRange, newNumberRange);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNumberRange(ChartRangeElement newNumberRange) {
+		if (newNumberRange != numberRange) {
+			NotificationChain msgs = null;
+			if (numberRange != null)
+				msgs = ((InternalEObject)numberRange).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE, null, msgs);
+			if (newNumberRange != null)
+				msgs = ((InternalEObject)newNumberRange).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE, null, msgs);
+			msgs = basicSetNumberRange(newNumberRange, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE, newNumberRange, newNumberRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE:
+				return basicSetNumberRange(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 ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE:
+				return getNumberIntervalValue();
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE:
+				return getNumberRange();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE:
+				setNumberIntervalValue((Integer)newValue);
+				return;
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE:
+				setNumberRange((ChartRangeElement)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE:
+				setNumberIntervalValue(NUMBER_INTERVAL_VALUE_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE:
+				setNumberRange((ChartRangeElement)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE:
+				return numberIntervalValue != NUMBER_INTERVAL_VALUE_EDEFAULT;
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL__NUMBER_RANGE:
+				return numberRange != 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(" (numberIntervalValue: ");
+		result.append(numberIntervalValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartNumberIntervalImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java
new file mode 100644
index 0000000..cf47acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl;
+
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartPackageImpl#getCharts <em>Charts</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartPackageImpl extends LPackageImpl implements ChartPackage {
+	/**
+	 * The cached value of the '{@link #getCharts() <em>Charts</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCharts()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Chart> charts;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartPackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_PACKAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Chart> getCharts() {
+		if (charts == null) {
+			charts = new EObjectContainmentEList<Chart>(Chart.class, this, ChartDSLPackage.CHART_PACKAGE__CHARTS);
+		}
+		return charts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PACKAGE__CHARTS:
+				return ((InternalEList<?>)getCharts()).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 ChartDSLPackage.CHART_PACKAGE__CHARTS:
+				return getCharts();
+		}
+		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 ChartDSLPackage.CHART_PACKAGE__CHARTS:
+				getCharts().clear();
+				getCharts().addAll((Collection<? extends Chart>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PACKAGE__CHARTS:
+				getCharts().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PACKAGE__CHARTS:
+				return charts != null && !charts.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ChartPackageImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java
new file mode 100644
index 0000000..6788134
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartPie;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Pie</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartPieImpl#isEmpty <em>Empty</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartPieImpl extends ChartLazyResolverImpl implements ChartPie {
+	/**
+	 * The default value of the '{@link #isEmpty() <em>Empty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEmpty()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EMPTY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isEmpty() <em>Empty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isEmpty()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean empty = EMPTY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartPieImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_PIE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isEmpty() {
+		return empty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEmpty(boolean newEmpty) {
+		boolean oldEmpty = empty;
+		empty = newEmpty;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_PIE__EMPTY, oldEmpty, empty));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PIE__EMPTY:
+				return isEmpty();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PIE__EMPTY:
+				setEmpty((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PIE__EMPTY:
+				setEmpty(EMPTY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_PIE__EMPTY:
+				return empty != EMPTY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (empty: ");
+		result.append(empty);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartPieImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java
new file mode 100644
index 0000000..2c58f26
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Segment Color</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartSegmentColorImpl#getRgb <em>Rgb</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartSegmentColorImpl extends ChartLazyResolverImpl implements ChartSegmentColor {
+	/**
+	 * The default value of the '{@link #getRgb() <em>Rgb</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRgb()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String RGB_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getRgb() <em>Rgb</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRgb()
+	 * @generated
+	 * @ordered
+	 */
+	protected String rgb = RGB_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartSegmentColorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_SEGMENT_COLOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getRgb() {
+		return rgb;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRgb(String newRgb) {
+		String oldRgb = rgb;
+		rgb = newRgb;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_SEGMENT_COLOR__RGB, oldRgb, rgb));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_SEGMENT_COLOR__RGB:
+				return getRgb();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_SEGMENT_COLOR__RGB:
+				setRgb((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_SEGMENT_COLOR__RGB:
+				setRgb(RGB_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_SEGMENT_COLOR__RGB:
+				return RGB_EDEFAULT == null ? rgb != null : !RGB_EDEFAULT.equals(rgb);
+		}
+		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(" (rgb: ");
+		result.append(rgb);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartSegmentColorImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java
new file mode 100644
index 0000000..fbfc5d4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java
@@ -0,0 +1,227 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Chart Tree</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl#isMap <em>Map</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl#isCollapsible <em>Collapsible</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ChartTreeImpl extends ChartLazyResolverImpl implements ChartTree {
+	/**
+	 * The default value of the '{@link #isMap() <em>Map</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMap()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean MAP_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isMap() <em>Map</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMap()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean map = MAP_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCollapsible() <em>Collapsible</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCollapsible()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean COLLAPSIBLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCollapsible() <em>Collapsible</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCollapsible()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean collapsible = COLLAPSIBLE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChartTreeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ChartDSLPackage.Literals.CHART_TREE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isMap() {
+		return map;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMap(boolean newMap) {
+		boolean oldMap = map;
+		map = newMap;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_TREE__MAP, oldMap, map));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCollapsible() {
+		return collapsible;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCollapsible(boolean newCollapsible) {
+		boolean oldCollapsible = collapsible;
+		collapsible = newCollapsible;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_TREE__COLLAPSIBLE, oldCollapsible, collapsible));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_TREE__MAP:
+				return isMap();
+			case ChartDSLPackage.CHART_TREE__COLLAPSIBLE:
+				return isCollapsible();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_TREE__MAP:
+				setMap((Boolean)newValue);
+				return;
+			case ChartDSLPackage.CHART_TREE__COLLAPSIBLE:
+				setCollapsible((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_TREE__MAP:
+				setMap(MAP_EDEFAULT);
+				return;
+			case ChartDSLPackage.CHART_TREE__COLLAPSIBLE:
+				setCollapsible(COLLAPSIBLE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ChartDSLPackage.CHART_TREE__MAP:
+				return map != MAP_EDEFAULT;
+			case ChartDSLPackage.CHART_TREE__COLLAPSIBLE:
+				return collapsible != COLLAPSIBLE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (map: ");
+		result.append(map);
+		result.append(", collapsible: ");
+		result.append(collapsible);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChartTreeImpl
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java
new file mode 100644
index 0000000..f54fdce
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java
@@ -0,0 +1,548 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.*;
+
+/**
+ * <!-- 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.chart.ChartDSLPackage
+ * @generated
+ */
+public class ChartDSLAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ChartDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDSLAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ChartDSLPackage.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 ChartDSLSwitch<Adapter> modelSwitch =
+		new ChartDSLSwitch<Adapter>() {
+			@Override
+			public Adapter caseChartModel(ChartModel object) {
+				return createChartModelAdapter();
+			}
+			@Override
+			public Adapter caseChartLazyResolver(ChartLazyResolver object) {
+				return createChartLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseChartBase(ChartBase object) {
+				return createChartBaseAdapter();
+			}
+			@Override
+			public Adapter caseChartPackage(ChartPackage object) {
+				return createChartPackageAdapter();
+			}
+			@Override
+			public Adapter caseChart(Chart object) {
+				return createChartAdapter();
+			}
+			@Override
+			public Adapter caseChartOption(ChartOption object) {
+				return createChartOptionAdapter();
+			}
+			@Override
+			public Adapter caseChartBar(ChartBar object) {
+				return createChartBarAdapter();
+			}
+			@Override
+			public Adapter caseChartLine(ChartLine object) {
+				return createChartLineAdapter();
+			}
+			@Override
+			public Adapter caseChartPie(ChartPie object) {
+				return createChartPieAdapter();
+			}
+			@Override
+			public Adapter caseChartDonut(ChartDonut object) {
+				return createChartDonutAdapter();
+			}
+			@Override
+			public Adapter caseChartBubble(ChartBubble object) {
+				return createChartBubbleAdapter();
+			}
+			@Override
+			public Adapter caseChartGauge(ChartGauge object) {
+				return createChartGaugeAdapter();
+			}
+			@Override
+			public Adapter caseChartTree(ChartTree object) {
+				return createChartTreeAdapter();
+			}
+			@Override
+			public Adapter caseChartInterval(ChartInterval object) {
+				return createChartIntervalAdapter();
+			}
+			@Override
+			public Adapter caseChartNumberInterval(ChartNumberInterval object) {
+				return createChartNumberIntervalAdapter();
+			}
+			@Override
+			public Adapter caseChartDatamart(ChartDatamart object) {
+				return createChartDatamartAdapter();
+			}
+			@Override
+			public Adapter caseChartElement(ChartElement object) {
+				return createChartElementAdapter();
+			}
+			@Override
+			public Adapter caseChartLegend(ChartLegend object) {
+				return createChartLegendAdapter();
+			}
+			@Override
+			public Adapter caseChartHighlighter(ChartHighlighter object) {
+				return createChartHighlighterAdapter();
+			}
+			@Override
+			public Adapter caseChartAxis(ChartAxis object) {
+				return createChartAxisAdapter();
+			}
+			@Override
+			public Adapter caseChartRangeElement(ChartRangeElement object) {
+				return createChartRangeElementAdapter();
+			}
+			@Override
+			public Adapter caseChartSegmentColor(ChartSegmentColor object) {
+				return createChartSegmentColorAdapter();
+			}
+			@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.chart.ChartModel <em>Chart 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.chart.ChartModel
+	 * @generated
+	 */
+	public Adapter createChartModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartLazyResolver <em>Chart Lazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.chart.ChartLazyResolver
+	 * @generated
+	 */
+	public Adapter createChartLazyResolverAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartBase <em>Chart Base</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.chart.ChartBase
+	 * @generated
+	 */
+	public Adapter createChartBaseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartPackage <em>Chart 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.chart.ChartPackage
+	 * @generated
+	 */
+	public Adapter createChartPackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.Chart <em>Chart</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.chart.Chart
+	 * @generated
+	 */
+	public Adapter createChartAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartOption <em>Chart Option</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.chart.ChartOption
+	 * @generated
+	 */
+	public Adapter createChartOptionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartBar <em>Chart Bar</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.chart.ChartBar
+	 * @generated
+	 */
+	public Adapter createChartBarAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartLine <em>Chart Line</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.chart.ChartLine
+	 * @generated
+	 */
+	public Adapter createChartLineAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartPie <em>Chart Pie</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.chart.ChartPie
+	 * @generated
+	 */
+	public Adapter createChartPieAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartDonut <em>Chart Donut</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.chart.ChartDonut
+	 * @generated
+	 */
+	public Adapter createChartDonutAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartBubble <em>Chart Bubble</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.chart.ChartBubble
+	 * @generated
+	 */
+	public Adapter createChartBubbleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartGauge <em>Chart Gauge</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.chart.ChartGauge
+	 * @generated
+	 */
+	public Adapter createChartGaugeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartTree <em>Chart Tree</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.chart.ChartTree
+	 * @generated
+	 */
+	public Adapter createChartTreeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartInterval <em>Chart Interval</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.chart.ChartInterval
+	 * @generated
+	 */
+	public Adapter createChartIntervalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval <em>Chart Number Interval</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.chart.ChartNumberInterval
+	 * @generated
+	 */
+	public Adapter createChartNumberIntervalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartDatamart <em>Chart Datamart</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.chart.ChartDatamart
+	 * @generated
+	 */
+	public Adapter createChartDatamartAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartElement <em>Chart Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.chart.ChartElement
+	 * @generated
+	 */
+	public Adapter createChartElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartLegend <em>Chart Legend</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.chart.ChartLegend
+	 * @generated
+	 */
+	public Adapter createChartLegendAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartHighlighter <em>Chart Highlighter</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.chart.ChartHighlighter
+	 * @generated
+	 */
+	public Adapter createChartHighlighterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartAxis <em>Chart Axis</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.chart.ChartAxis
+	 * @generated
+	 */
+	public Adapter createChartAxisAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartRangeElement <em>Chart Range Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.chart.ChartRangeElement
+	 * @generated
+	 */
+	public Adapter createChartRangeElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.chart.ChartSegmentColor <em>Chart Segment Color</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.chart.ChartSegmentColor
+	 * @generated
+	 */
+	public Adapter createChartSegmentColorAdapter() {
+		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;
+	}
+
+} //ChartDSLAdapterFactory
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java
new file mode 100644
index 0000000..67e39dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java
@@ -0,0 +1,629 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.chart.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.chart.*;
+
+/**
+ * <!-- 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.chart.ChartDSLPackage
+ * @generated
+ */
+public class ChartDSLSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ChartDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChartDSLSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ChartDSLPackage.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 ChartDSLPackage.CHART_MODEL: {
+				ChartModel chartModel = (ChartModel)theEObject;
+				T result = caseChartModel(chartModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_LAZY_RESOLVER: {
+				ChartLazyResolver chartLazyResolver = (ChartLazyResolver)theEObject;
+				T result = caseChartLazyResolver(chartLazyResolver);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_BASE: {
+				ChartBase chartBase = (ChartBase)theEObject;
+				T result = caseChartBase(chartBase);
+				if (result == null) result = caseChartLazyResolver(chartBase);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_PACKAGE: {
+				ChartPackage chartPackage = (ChartPackage)theEObject;
+				T result = caseChartPackage(chartPackage);
+				if (result == null) result = caseLPackage(chartPackage);
+				if (result == null) result = caseLLazyResolver(chartPackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART: {
+				Chart chart = (Chart)theEObject;
+				T result = caseChart(chart);
+				if (result == null) result = caseChartBase(chart);
+				if (result == null) result = caseChartLazyResolver(chart);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_OPTION: {
+				ChartOption chartOption = (ChartOption)theEObject;
+				T result = caseChartOption(chartOption);
+				if (result == null) result = caseChartLazyResolver(chartOption);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_BAR: {
+				ChartBar chartBar = (ChartBar)theEObject;
+				T result = caseChartBar(chartBar);
+				if (result == null) result = caseChartOption(chartBar);
+				if (result == null) result = caseChartLazyResolver(chartBar);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_LINE: {
+				ChartLine chartLine = (ChartLine)theEObject;
+				T result = caseChartLine(chartLine);
+				if (result == null) result = caseChartOption(chartLine);
+				if (result == null) result = caseChartLazyResolver(chartLine);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_PIE: {
+				ChartPie chartPie = (ChartPie)theEObject;
+				T result = caseChartPie(chartPie);
+				if (result == null) result = caseChartOption(chartPie);
+				if (result == null) result = caseChartLazyResolver(chartPie);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_DONUT: {
+				ChartDonut chartDonut = (ChartDonut)theEObject;
+				T result = caseChartDonut(chartDonut);
+				if (result == null) result = caseChartOption(chartDonut);
+				if (result == null) result = caseChartLazyResolver(chartDonut);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_BUBBLE: {
+				ChartBubble chartBubble = (ChartBubble)theEObject;
+				T result = caseChartBubble(chartBubble);
+				if (result == null) result = caseChartOption(chartBubble);
+				if (result == null) result = caseChartLazyResolver(chartBubble);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_GAUGE: {
+				ChartGauge chartGauge = (ChartGauge)theEObject;
+				T result = caseChartGauge(chartGauge);
+				if (result == null) result = caseChartOption(chartGauge);
+				if (result == null) result = caseChartLazyResolver(chartGauge);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_TREE: {
+				ChartTree chartTree = (ChartTree)theEObject;
+				T result = caseChartTree(chartTree);
+				if (result == null) result = caseChartOption(chartTree);
+				if (result == null) result = caseChartLazyResolver(chartTree);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_INTERVAL: {
+				ChartInterval chartInterval = (ChartInterval)theEObject;
+				T result = caseChartInterval(chartInterval);
+				if (result == null) result = caseChartLazyResolver(chartInterval);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL: {
+				ChartNumberInterval chartNumberInterval = (ChartNumberInterval)theEObject;
+				T result = caseChartNumberInterval(chartNumberInterval);
+				if (result == null) result = caseChartInterval(chartNumberInterval);
+				if (result == null) result = caseChartLazyResolver(chartNumberInterval);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_DATAMART: {
+				ChartDatamart chartDatamart = (ChartDatamart)theEObject;
+				T result = caseChartDatamart(chartDatamart);
+				if (result == null) result = caseChartLazyResolver(chartDatamart);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_ELEMENT: {
+				ChartElement chartElement = (ChartElement)theEObject;
+				T result = caseChartElement(chartElement);
+				if (result == null) result = caseChartLazyResolver(chartElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_LEGEND: {
+				ChartLegend chartLegend = (ChartLegend)theEObject;
+				T result = caseChartLegend(chartLegend);
+				if (result == null) result = caseChartElement(chartLegend);
+				if (result == null) result = caseChartLazyResolver(chartLegend);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_HIGHLIGHTER: {
+				ChartHighlighter chartHighlighter = (ChartHighlighter)theEObject;
+				T result = caseChartHighlighter(chartHighlighter);
+				if (result == null) result = caseChartElement(chartHighlighter);
+				if (result == null) result = caseChartLazyResolver(chartHighlighter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_AXIS: {
+				ChartAxis chartAxis = (ChartAxis)theEObject;
+				T result = caseChartAxis(chartAxis);
+				if (result == null) result = caseChartElement(chartAxis);
+				if (result == null) result = caseChartLazyResolver(chartAxis);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_RANGE_ELEMENT: {
+				ChartRangeElement chartRangeElement = (ChartRangeElement)theEObject;
+				T result = caseChartRangeElement(chartRangeElement);
+				if (result == null) result = caseChartLazyResolver(chartRangeElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ChartDSLPackage.CHART_SEGMENT_COLOR: {
+				ChartSegmentColor chartSegmentColor = (ChartSegmentColor)theEObject;
+				T result = caseChartSegmentColor(chartSegmentColor);
+				if (result == null) result = caseChartRangeElement(chartSegmentColor);
+				if (result == null) result = caseChartLazyResolver(chartSegmentColor);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart 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>Chart Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartModel(ChartModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Lazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Chart Lazy Resolver</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartLazyResolver(ChartLazyResolver object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Base</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Chart Base</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartBase(ChartBase object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart 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>Chart Package</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartPackage(ChartPackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart</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>Chart</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChart(Chart object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Option</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>Chart Option</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartOption(ChartOption object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Bar</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>Chart Bar</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartBar(ChartBar object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Line</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>Chart Line</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartLine(ChartLine object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Pie</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>Chart Pie</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartPie(ChartPie object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Donut</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>Chart Donut</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartDonut(ChartDonut object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Bubble</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>Chart Bubble</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartBubble(ChartBubble object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Gauge</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>Chart Gauge</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartGauge(ChartGauge object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Tree</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>Chart Tree</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartTree(ChartTree object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Interval</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>Chart Interval</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartInterval(ChartInterval object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Number Interval</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>Chart Number Interval</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartNumberInterval(ChartNumberInterval object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Datamart</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>Chart Datamart</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartDatamart(ChartDatamart object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Chart Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartElement(ChartElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Legend</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>Chart Legend</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartLegend(ChartLegend object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Highlighter</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>Chart Highlighter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartHighlighter(ChartHighlighter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Axis</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Chart Axis</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartAxis(ChartAxis object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Range Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Chart Range Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartRangeElement(ChartRangeElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chart Segment Color</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>Chart Segment Color</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChartSegmentColor(ChartSegmentColor 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;
+	}
+
+} //ChartDSLSwitch
diff --git a/org.eclipse.osbp.xtext.chart/epl-v10.html b/org.eclipse.osbp.xtext.chart/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/license.html b/org.eclipse.osbp.xtext.chart/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/log4j.properties b/org.eclipse.osbp.xtext.chart/log4j.properties
new file mode 100644
index 0000000..c8514c1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/log4j.properties
@@ -0,0 +1,19 @@
+# Log configuration for Xtext logging.
+# This log configuration will be used for the non-UI parts of Xtext.
+#
+# For your convenience: valid log levels are (from least to most significant):
+# TRACE, DEBUG, INFO, WARN, ERROR and FATAL
+# Log4J manual: http://logging.apache.org/log4j/1.2/manual.html
+# Xtext log configuration info: http://wiki.eclipse.org/Xtext_Project_Plan/Features/Logging
+
+# Root logger configuration. Don't change this.
+log4j.rootLogger=INFO, default
+
+# This appender will write to the stdout console
+log4j.appender.default=org.apache.log4j.ConsoleAppender
+log4j.appender.default.layout=org.apache.log4j.PatternLayout
+log4j.appender.default.layout.ConversionPattern=%-4r [%t] %-5p %35.35c %x - %m%n
+
+# Configure your log categories below:
+log4j.logger.org.eclipse.xtext=INFO
+log4j.logger.org.eclipse.xtext.parsetree.reconstr=INFO
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore b/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore
new file mode 100644
index 0000000..b4d3ea5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore
@@ -0,0 +1,175 @@
+@GenModel(fileExtensions="chart")
+@GenModel(modelName="ChartDSL")
+@GenModel(prefix="ChartDSL")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+  
+ Contributors:  
+ 		Joerg Riegel - Initial implementation 
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/xtext/chart/ChartDSL")
+@Ecore(nsPrefix="chartdsl")
+@Ecore(rootPackage="chartdsl")
+package org.eclipse.osbp.xtext.chart
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+
+class ChartModel {
+	contains ChartPackage[] packages
+}
+
+type InternalEObject wraps InternalEObject
+
+class ChartLazyResolver {
+	op EObject eResolveProxy(InternalEObject proxy) {
+		return EcoreUtil3.resolve(proxy, this.eResource().resourceSet);
+	}
+}
+
+class ChartBase extends ChartLazyResolver{
+	String name
+}
+
+class ChartPackage extends LPackage{
+	contains Chart[] charts
+}
+
+class Chart extends ChartBase{
+	boolean description
+	String descriptionValue
+	boolean polling
+	int pollingTime
+	contains ChartOption charttype 
+	contains ChartDatamart source
+}
+
+interface ChartOption extends ChartLazyResolver{}
+
+class ChartBar extends ChartOption {
+	boolean shadow
+	boolean animated
+	boolean swapped
+	boolean stacked
+}
+
+class ChartLine extends ChartOption {
+	boolean animated
+	boolean showMarker
+	boolean trendLine
+	boolean zoom
+	boolean cursor
+	boolean tooltip
+	boolean fillToZero
+	boolean fillArea
+}
+
+class ChartPie extends ChartOption {
+	boolean empty
+}
+
+class ChartDonut extends ChartOption {
+}
+
+class ChartBubble extends ChartOption {
+	boolean multiplier
+	String multiplierValue 
+	boolean gradient
+	boolean transparent
+}
+
+class ChartGauge extends ChartOption {
+	boolean labeled
+	String labelValue
+	boolean hasTicks
+	int minValue
+	int maxValue
+	boolean hasIntervals
+	contains ChartInterval[] intervals
+}
+
+class ChartTree extends ChartOption {
+	boolean map
+	boolean collapsible
+}
+
+interface ChartInterval extends ChartLazyResolver {}
+
+class ChartNumberInterval extends ChartInterval {
+	int numberIntervalValue
+	contains ChartRangeElement numberRange
+}
+
+class ChartDatamart extends ChartLazyResolver {
+	refers DatamartDefinition datamartRef
+	contains ChartElement[] elements
+}
+
+interface ChartElement extends ChartLazyResolver{}
+
+class ChartLegend extends ChartElement {
+	LegendPlacementEnum placement
+	boolean toggle
+	boolean replot
+	ToggleTypeEnum toggleType
+}
+
+class ChartHighlighter extends ChartElement {
+	TooltipLocationEnum location
+	boolean tooltipAlways
+	boolean insideChart
+}
+
+class ChartAxis extends ChartElement {
+	refers DatamartAxis axis
+	RenderTypeEnum renderType
+	boolean shortLabel
+	int angle
+}
+
+interface ChartRangeElement extends ChartLazyResolver {}
+
+class ChartSegmentColor extends ChartRangeElement {
+	String rgb
+}
+
+enum LegendPlacementEnum{
+	 INSIDE as 'inside'
+	 INSIDE_GRID as 'inside-grid'
+	 OUTSIDE as 'outside'
+	 OUTSIDE_GRID as 'outside-grid'
+ }
+
+enum ToggleTypeEnum{
+	NORMAL as 'normal'
+	SLOW as 'slow'
+	FAST as 'fast'
+}
+	
+enum TooltipLocationEnum{
+	NORTH as 'north'
+	NORTH_EAST as 'north-east'
+	EAST as 'east'
+	SOUTH_EAST as 'south-east'
+	SOUTH as 'south'
+	SOUTH_WEST as 'south-west'
+	WEST as 'west'
+	NORTH_WEST as 'north-west'
+}
+	
+enum RenderTypeEnum{
+	CATEGORY as 'category'
+	LINEAR as 'linear'
+	DATE as 'date'
+	LOG as 'logarithmic'
+	PYRAMID as 'pyramid'
+}
diff --git a/org.eclipse.osbp.xtext.chart/plugin.properties b/org.eclipse.osbp.xtext.chart/plugin.properties
new file mode 100644
index 0000000..2657250
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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 = ChartDSL Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.chart/plugin.xml b/org.eclipse.osbp.xtext.chart/plugin.xml
new file mode 100644
index 0000000..57ce53a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://osbp.eclipse.org/xtext/chart/ChartDSL" 
+       class = "org.eclipse.osbp.xtext.chartdsl.chartDSL.ChartDSLPackage"
+       genModel = "org/eclipse/osbp/xtext/chartdsl/ChartDSL.genmodel" /> 
+	
+  </extension>
+
+
+
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated chartdsl -->
+      <package
+            uri="http://osbp.eclipse.org/xtext/chart/ChartDSL"
+            class="org.eclipse.osbp.xtext.chart.ChartDSLPackage"
+            genModel="model/chartdsl.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.chart/pom.xml b/org.eclipse.osbp.xtext.chart/pom.xml
new file mode 100644
index 0000000..a3d1c22
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart</groupId>
+        <artifactId>org.eclipse.osbp.xtext.chart.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.xtext.chart</artifactId>
+    <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/README.txt b/org.eclipse.osbp.xtext.chart/src-gen/README.txt
new file mode 100644
index 0000000..bbbe557
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/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.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java
new file mode 100644
index 0000000..e678ef7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java
@@ -0,0 +1,352 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart;
+
+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.chart.ChartDSLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractChartDSLRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/xtext/chart/ChartDSL.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.xtext.chart.ChartDSL");
+	}
+	
+	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("chart");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.xtext.chart.serializer.ChartDSLSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.xtext.chart.serializer.ChartDSLSyntacticSequencer.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.chart.parser.antlr.ChartDSLParser.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.chart.parser.antlr.ChartDSLAntlrTokenFileProvider.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.chart.parser.antlr.internal.InternalChartDSLLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLLexer> provideInternalChartDSLLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLLexer.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.chart.parser.antlr.internal.InternalChartDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper> bindIUnorderedGroupHelper() {
+		return org.eclipse.xtext.parser.antlr.UnorderedGroupHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.chart.validation.ChartDSLValidator> bindChartDSLValidator() {
+		return org.eclipse.osbp.xtext.chart.validation.ChartDSLValidator.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.chart.formatting.ChartDSLFormatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
+		return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ClasspathBasedTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.interpreter.IEvaluationContext> bindIEvaluationContext() {
+		return org.eclipse.xtext.xbase.interpreter.impl.DefaultEvaluationContext.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter> bindIExpressionInterpreter() {
+		return org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameConverter> bindIQualifiedNameConverter() {
+		return org.eclipse.xtext.xbase.XbaseQualifiedNameConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
+		return org.eclipse.xtext.xbase.conversion.XbaseValueConverterService.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureLinkingIScopeProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.linking.LinkingScopeProviderBinding.class).to(org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureSerializerIScopeProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class).to(org.eclipse.xtext.xbase.serializer.SerializerScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.xbase.scoping.XbaseImportedNamespaceScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return org.eclipse.xtext.xbase.linking.XbaseLazyLinker.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return org.eclipse.xtext.xbase.resource.BatchLinkableResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator> bindJvmTypeReferencesValidator() {
+		return org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() {
+		return org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IResourceDescription.Manager> bindIResourceDescription$Manager() {
+		return org.eclipse.xtext.resource.DerivedStateAwareResourceDescriptionManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return org.eclipse.xtext.xbase.compiler.JvmModelGenerator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public org.eclipse.xtext.xtype.XtypeFactory bindXtypeFactoryToInstance() {
+		return org.eclipse.xtext.xtype.XtypeFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.debug.IStratumBreakpointSupport> bindIStratumBreakpointSupport() {
+		return org.eclipse.xtext.xbase.debug.XbaseStratumBreakpointSupport.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.LineSeparatorHarmonizer> bindLineSeparatorHarmonizer() {
+		return org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
+		return org.eclipse.xtext.xbase.resource.XbaseResourceDescriptionStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.SeverityConverter> bindSeverityConverter() {
+		return org.eclipse.xtext.xbase.validation.XbaseSeverityConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
+		return org.eclipse.xtext.xbase.validation.XbaseConfigurableIssueCodes.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
+		return org.eclipse.xtext.xbase.linking.BrokenConstructorCallAwareEObjectAtOffsetHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.CancelableDiagnostician> bindCancelableDiagnostician() {
+		return org.eclipse.xtext.xbase.validation.XbaseDiagnostician.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.featurecalls.StaticImplicitMethodsFeatureForTypeProvider.ExtensionClassNameProvider> bindStaticImplicitMethodsFeatureForTypeProvider$ExtensionClassNameProvider() {
+		return org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedTypesAdapter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtend.lib.macro.file.MutableFileSystemSupport> bindMutableFileSystemSupport() {
+		return org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtend.lib.macro.file.FileLocations> bindFileLocations() {
+		return org.eclipse.xtext.xbase.file.FileLocationsImpl.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends com.google.inject.Provider<org.eclipse.xtext.xbase.file.WorkspaceConfig>> provideWorkspaceConfig() {
+		return org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer> bindITypeComputer() {
+		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
+		return org.eclipse.xtext.xbase.annotations.validation.UnresolvedAnnotationTypeAwareMessageProducer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.ILocationInFileProvider> bindILocationInFileProvider() {
+		return org.eclipse.xtext.xbase.jvmmodel.JvmLocationInFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.validation.FeatureNameValidator> bindFeatureNameValidator() {
+		return org.eclipse.xtext.xbase.validation.LogicalContainerAwareFeatureNameValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
+		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareBatchTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
+		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.IResourceValidator> bindIResourceValidator() {
+		return org.eclipse.xtext.xbase.annotations.validation.DerivedStateAwareResourceValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer> bindIJvmModelInferrer() {
+		return org.eclipse.osbp.xtext.chart.jvmmodel.ChartDSLJvmModelInferrer.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.chart.services.ChartDSLGrammarAccess.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java
new file mode 100644
index 0000000..237e77b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java
@@ -0,0 +1,52 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart;
+
+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 ChartDSLStandaloneSetupGenerated 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.chart.ChartDSLRuntimeModule());
+	}
+	
+	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("chart", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("chart", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.java
new file mode 100644
index 0000000..142ae09
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.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.chart.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class ChartDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.java
new file mode 100644
index 0000000..9dd1bfa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.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.chart.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+
+public class ChartDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private ChartDSLGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "ChartModel";
+	}
+	
+	public ChartDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g
new file mode 100644
index 0000000..3cfb562
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g
@@ -0,0 +1,8626 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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 InternalChartDSL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.chart.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.chart.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private ChartDSLGrammarAccess grammarAccess;
+ 	
+    public InternalChartDSLParser(TokenStream input, ChartDSLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "ChartModel";	
+   	}
+   	
+   	@Override
+   	protected ChartDSLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleChartModel
+entryRuleChartModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartModelRule()); }
+	 iv_ruleChartModel=ruleChartModel 
+	 { $current=$iv_ruleChartModel.current; } 
+	 EOF 
+;
+
+// Rule ChartModel
+ruleChartModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleChartPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"ChartPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleChartPackage
+entryRuleChartPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartPackageRule()); }
+	 iv_ruleChartPackage=ruleChartPackage 
+	 { $current=$iv_ruleChartPackage.current; } 
+	 EOF 
+;
+
+// Rule ChartPackage
+ruleChartPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartPackageAccess().getChartPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartPackageAccess().getImportsChartImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleChartImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"ChartImport");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_2_0()); 
+	    }
+		lv_charts_5_0=ruleChart		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"charts",
+        		lv_charts_5_0, 
+        		"Chart");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleChart
+entryRuleChart returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartRule()); }
+	 iv_ruleChart=ruleChart 
+	 { $current=$iv_ruleChart.current; } 
+	 EOF 
+;
+
+// Rule Chart
+ruleChart returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartAccess().getChartAction_0(),
+            $current);
+    }
+)	otherlv_1='chart' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartAccess().getChartKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_description_3_0=	'described by' 
+    {
+        newLeafNode(lv_description_3_0, grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartRule());
+	        }
+       		setWithLastConsumed($current, "description", true, "described by");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+	    }
+		lv_descriptionValue_4_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartRule());
+	        }
+       		set(
+       			$current, 
+       			"descriptionValue",
+        		lv_descriptionValue_4_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_5='as' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getChartAccess().getAsKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); 
+	    }
+		lv_charttype_6_0=ruleChartOption		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartRule());
+	        }
+       		set(
+       			$current, 
+       			"charttype",
+        		lv_charttype_6_0, 
+        		"ChartOption");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_polling_7_0=	'polling' 
+    {
+        newLeafNode(lv_polling_7_0, grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartRule());
+	        }
+       		setWithLastConsumed($current, "polling", true, "polling");
+	    }
+
+)
+)(
+(
+		lv_pollingTime_8_0=RULE_INT
+		{
+			newLeafNode(lv_pollingTime_8_0, grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"pollingTime",
+        		lv_pollingTime_8_0, 
+        		"INT");
+	    }
+
+)
+))?(	otherlv_9='using' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getChartAccess().getUsingKeyword_7_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); 
+	    }
+		lv_source_10_0=ruleChartDatamart		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartRule());
+	        }
+       		set(
+       			$current, 
+       			"source",
+        		lv_source_10_0, 
+        		"ChartDatamart");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleChartOption
+entryRuleChartOption returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartOptionRule()); }
+	 iv_ruleChartOption=ruleChartOption 
+	 { $current=$iv_ruleChartOption.current; } 
+	 EOF 
+;
+
+// Rule ChartOption
+ruleChartOption returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
+    }
+    this_ChartBar_0=ruleChartBar
+    { 
+        $current = $this_ChartBar_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
+    }
+    this_ChartLine_1=ruleChartLine
+    { 
+        $current = $this_ChartLine_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
+    }
+    this_ChartPie_2=ruleChartPie
+    { 
+        $current = $this_ChartPie_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
+    }
+    this_ChartDonut_3=ruleChartDonut
+    { 
+        $current = $this_ChartDonut_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
+    }
+    this_ChartBubble_4=ruleChartBubble
+    { 
+        $current = $this_ChartBubble_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
+    }
+    this_ChartGauge_5=ruleChartGauge
+    { 
+        $current = $this_ChartGauge_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
+    }
+    this_ChartTree_6=ruleChartTree
+    { 
+        $current = $this_ChartTree_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleChartBar
+entryRuleChartBar returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartBarRule()); }
+	 iv_ruleChartBar=ruleChartBar 
+	 { $current=$iv_ruleChartBar.current; } 
+	 EOF 
+;
+
+// Rule ChartBar
+ruleChartBar returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartBarAccess().getChartBarAction_0(),
+            $current);
+    }
+)	otherlv_1='bar' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartBarAccess().getBarKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(
+(
+		lv_shadow_3_0=	'shaded' 
+    {
+        newLeafNode(lv_shadow_3_0, grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBarRule());
+	        }
+       		setWithLastConsumed($current, "shadow", true, "shaded");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(
+(
+		lv_animated_4_0=	'animated' 
+    {
+        newLeafNode(lv_animated_4_0, grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBarRule());
+	        }
+       		setWithLastConsumed($current, "animated", true, "animated");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>(
+(
+		lv_swapped_5_0=	'swapped' 
+    {
+        newLeafNode(lv_swapped_5_0, grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBarRule());
+	        }
+       		setWithLastConsumed($current, "swapped", true, "swapped");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
+	 				}
+					({true}?=>(
+(
+		lv_stacked_6_0=	'stacked' 
+    {
+        newLeafNode(lv_stacked_6_0, grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBarRule());
+	        }
+       		setWithLastConsumed($current, "stacked", true, "stacked");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	}
+
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChartLine
+entryRuleChartLine returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartLineRule()); }
+	 iv_ruleChartLine=ruleChartLine 
+	 { $current=$iv_ruleChartLine.current; } 
+	 EOF 
+;
+
+// Rule ChartLine
+ruleChartLine returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartLineAccess().getChartLineAction_0(),
+            $current);
+    }
+)	otherlv_1='line' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartLineAccess().getLineKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(
+(
+		lv_animated_3_0=	'animated' 
+    {
+        newLeafNode(lv_animated_3_0, grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "animated", true, "animated");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(
+(
+		lv_showMarker_4_0=	'showMarker' 
+    {
+        newLeafNode(lv_showMarker_4_0, grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "showMarker", true, "showMarker");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>(
+(
+		lv_trendLine_5_0=	'trendLine' 
+    {
+        newLeafNode(lv_trendLine_5_0, grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "trendLine", true, "trendLine");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
+	 				}
+					({true}?=>((
+(
+		lv_cursor_6_0=	'cursor' 
+    {
+        newLeafNode(lv_cursor_6_0, grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "cursor", true, "cursor");
+	    }
+
+)
+)(
+(
+		lv_zoom_7_0=	'zoom' 
+    {
+        newLeafNode(lv_zoom_7_0, grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "zoom", true, "zoom");
+	    }
+
+)
+)?(
+(
+		lv_tooltip_8_0=	'tooltip' 
+    {
+        newLeafNode(lv_tooltip_8_0, grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "tooltip", true, "tooltip");
+	    }
+
+)
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
+	 				}
+					({true}?=>(
+(
+		lv_fillToZero_9_0=	'fillZero' 
+    {
+        newLeafNode(lv_fillToZero_9_0, grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "fillToZero", true, "fillZero");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
+	 				}
+					({true}?=>(
+(
+		lv_fillArea_10_0=	'filled' 
+    {
+        newLeafNode(lv_fillArea_10_0, grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLineRule());
+	        }
+       		setWithLastConsumed($current, "fillArea", true, "filled");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	}
+
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChartPie
+entryRuleChartPie returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartPieRule()); }
+	 iv_ruleChartPie=ruleChartPie 
+	 { $current=$iv_ruleChartPie.current; } 
+	 EOF 
+;
+
+// Rule ChartPie
+ruleChartPie returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartPieAccess().getChartPieAction_0(),
+            $current);
+    }
+)	otherlv_1='pie' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartPieAccess().getPieKeyword_1());
+    }
+(
+(
+		lv_empty_2_0=	'empty' 
+    {
+        newLeafNode(lv_empty_2_0, grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartPieRule());
+	        }
+       		setWithLastConsumed($current, "empty", true, "empty");
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleChartDonut
+entryRuleChartDonut returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartDonutRule()); }
+	 iv_ruleChartDonut=ruleChartDonut 
+	 { $current=$iv_ruleChartDonut.current; } 
+	 EOF 
+;
+
+// Rule ChartDonut
+ruleChartDonut returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartDonutAccess().getChartDonutAction_0(),
+            $current);
+    }
+)	otherlv_1='donut' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartDonutAccess().getDonutKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleChartBubble
+entryRuleChartBubble returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartBubbleRule()); }
+	 iv_ruleChartBubble=ruleChartBubble 
+	 { $current=$iv_ruleChartBubble.current; } 
+	 EOF 
+;
+
+// Rule ChartBubble
+ruleChartBubble returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartBubbleAccess().getChartBubbleAction_0(),
+            $current);
+    }
+)	otherlv_1='bubble' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartBubbleAccess().getBubbleKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>((
+(
+		lv_multiplier_3_0=	'multiplier' 
+    {
+        newLeafNode(lv_multiplier_3_0, grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBubbleRule());
+	        }
+       		setWithLastConsumed($current, "multiplier", true, "multiplier");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); 
+	    }
+		lv_multiplierValue_4_0=ruleNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartBubbleRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplierValue",
+        		lv_multiplierValue_4_0, 
+        		"Number");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_gradient_5_0=	'gradient' 
+    {
+        newLeafNode(lv_gradient_5_0, grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBubbleRule());
+	        }
+       		setWithLastConsumed($current, "gradient", true, "gradient");
+	    }
+
+)
+)
+    |(
+(
+		lv_transparent_6_0=	'transparent' 
+    {
+        newLeafNode(lv_transparent_6_0, grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartBubbleRule());
+	        }
+       		setWithLastConsumed($current, "transparent", true, "transparent");
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleChartGauge
+entryRuleChartGauge returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartGaugeRule()); }
+	 iv_ruleChartGauge=ruleChartGauge 
+	 { $current=$iv_ruleChartGauge.current; } 
+	 EOF 
+;
+
+// Rule ChartGauge
+ruleChartGauge returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartGaugeAccess().getChartGaugeAction_0(),
+            $current);
+    }
+)	otherlv_1='gauge' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartGaugeAccess().getGaugeKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>((
+(
+		lv_labeled_3_0=	'label' 
+    {
+        newLeafNode(lv_labeled_3_0, grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartGaugeRule());
+	        }
+       		setWithLastConsumed($current, "labeled", true, "label");
+	    }
+
+)
+)(
+(
+		lv_labelValue_4_0=RULE_STRING
+		{
+			newLeafNode(lv_labelValue_4_0, grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartGaugeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"labelValue",
+        		lv_labelValue_4_0, 
+        		"STRING");
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_hasTicks_5_0=	'hasTicks' 
+    {
+        newLeafNode(lv_hasTicks_5_0, grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartGaugeRule());
+	        }
+       		setWithLastConsumed($current, "hasTicks", true, "hasTicks");
+	    }
+
+)
+)	otherlv_6='minimum' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1());
+    }
+(
+(
+		lv_minValue_7_0=RULE_INT
+		{
+			newLeafNode(lv_minValue_7_0, grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartGaugeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"minValue",
+        		lv_minValue_7_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_8='maximum' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3());
+    }
+(
+(
+		lv_maxValue_9_0=RULE_INT
+		{
+			newLeafNode(lv_maxValue_9_0, grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartGaugeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"maxValue",
+        		lv_maxValue_9_0, 
+        		"INT");
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((
+(
+		lv_hasIntervals_10_0=	'intervals' 
+    {
+        newLeafNode(lv_hasIntervals_10_0, grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartGaugeRule());
+	        }
+       		setWithLastConsumed($current, "hasIntervals", true, "intervals");
+	    }
+
+)
+)	otherlv_11='{' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); 
+	    }
+		lv_intervals_12_0=ruleChartInterval		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartGaugeRule());
+	        }
+       		add(
+       			$current, 
+       			"intervals",
+        		lv_intervals_12_0, 
+        		"ChartInterval");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	}
+
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChartTree
+entryRuleChartTree returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartTreeRule()); }
+	 iv_ruleChartTree=ruleChartTree 
+	 { $current=$iv_ruleChartTree.current; } 
+	 EOF 
+;
+
+// Rule ChartTree
+ruleChartTree returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartTreeAccess().getChartTreeAction_0(),
+            $current);
+    }
+)	otherlv_1='tree' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartTreeAccess().getTreeKeyword_1());
+    }
+((
+(
+		lv_map_2_0=	'map' 
+    {
+        newLeafNode(lv_map_2_0, grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartTreeRule());
+	        }
+       		setWithLastConsumed($current, "map", true, "map");
+	    }
+
+)
+)
+    |(
+(
+		lv_collapsible_3_0=	'collapsible' 
+    {
+        newLeafNode(lv_collapsible_3_0, grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartTreeRule());
+	        }
+       		setWithLastConsumed($current, "collapsible", true, "collapsible");
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleChartInterval
+entryRuleChartInterval returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartIntervalRule()); }
+	 iv_ruleChartInterval=ruleChartInterval 
+	 { $current=$iv_ruleChartInterval.current; } 
+	 EOF 
+;
+
+// Rule ChartInterval
+ruleChartInterval returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
+    }
+    this_ChartNumberInterval_0=ruleChartNumberInterval
+    { 
+        $current = $this_ChartNumberInterval_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleChartNumberInterval
+entryRuleChartNumberInterval returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartNumberIntervalRule()); }
+	 iv_ruleChartNumberInterval=ruleChartNumberInterval 
+	 { $current=$iv_ruleChartNumberInterval.current; } 
+	 EOF 
+;
+
+// Rule ChartNumberInterval
+ruleChartNumberInterval returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0(),
+            $current);
+    }
+)	otherlv_1='up to' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); 
+	    }
+		lv_numberIntervalValue_2_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+	        }
+       		set(
+       			$current, 
+       			"numberIntervalValue",
+        		lv_numberIntervalValue_2_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); 
+	    }
+		lv_numberRange_3_0=ruleChartRangeElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+	        }
+       		set(
+       			$current, 
+       			"numberRange",
+        		lv_numberRange_3_0, 
+        		"ChartRangeElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChartDatamart
+entryRuleChartDatamart returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartDatamartRule()); }
+	 iv_ruleChartDatamart=ruleChartDatamart 
+	 { $current=$iv_ruleChartDatamart.current; } 
+	 EOF 
+;
+
+// Rule ChartDatamart
+ruleChartDatamart returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datamart' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getChartDatamartAccess().getDatamartKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartDatamartRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); 
+	    }
+		lv_elements_3_0=ruleChartElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartDatamartRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"ChartElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleChartElement
+entryRuleChartElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartElementRule()); }
+	 iv_ruleChartElement=ruleChartElement 
+	 { $current=$iv_ruleChartElement.current; } 
+	 EOF 
+;
+
+// Rule ChartElement
+ruleChartElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
+    }
+    this_ChartAxis_0=ruleChartAxis
+    { 
+        $current = $this_ChartAxis_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
+    }
+    this_ChartLegend_1=ruleChartLegend
+    { 
+        $current = $this_ChartLegend_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
+    }
+    this_ChartHighlighter_2=ruleChartHighlighter
+    { 
+        $current = $this_ChartHighlighter_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleChartLegend
+entryRuleChartLegend returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartLegendRule()); }
+	 iv_ruleChartLegend=ruleChartLegend 
+	 { $current=$iv_ruleChartLegend.current; } 
+	 EOF 
+;
+
+// Rule ChartLegend
+ruleChartLegend returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='legend' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getChartLegendAccess().getLegendKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); 
+	    }
+		lv_placement_1_0=ruleLegendPlacementEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartLegendRule());
+	        }
+       		set(
+       			$current, 
+       			"placement",
+        		lv_placement_1_0, 
+        		"LegendPlacementEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_toggle_2_0=	'toggle' 
+    {
+        newLeafNode(lv_toggle_2_0, grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLegendRule());
+	        }
+       		setWithLastConsumed($current, "toggle", true, "toggle");
+	    }
+
+)
+)(
+(
+		lv_replot_3_0=	'replot' 
+    {
+        newLeafNode(lv_replot_3_0, grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartLegendRule());
+	        }
+       		setWithLastConsumed($current, "replot", true, "replot");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); 
+	    }
+		lv_toggleType_4_0=ruleToggleTypeEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartLegendRule());
+	        }
+       		set(
+       			$current, 
+       			"toggleType",
+        		lv_toggleType_4_0, 
+        		"ToggleTypeEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleChartHighlighter
+entryRuleChartHighlighter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartHighlighterRule()); }
+	 iv_ruleChartHighlighter=ruleChartHighlighter 
+	 { $current=$iv_ruleChartHighlighter.current; } 
+	 EOF 
+;
+
+// Rule ChartHighlighter
+ruleChartHighlighter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='tooltip' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); 
+	    }
+		lv_location_1_0=ruleTooltipLocationEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartHighlighterRule());
+	        }
+       		set(
+       			$current, 
+       			"location",
+        		lv_location_1_0, 
+        		"TooltipLocationEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_tooltipAlways_2_0=	'always' 
+    {
+        newLeafNode(lv_tooltipAlways_2_0, grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartHighlighterRule());
+	        }
+       		setWithLastConsumed($current, "tooltipAlways", true, "always");
+	    }
+
+)
+)?(
+(
+		lv_insideChart_3_0=	'inside' 
+    {
+        newLeafNode(lv_insideChart_3_0, grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartHighlighterRule());
+	        }
+       		setWithLastConsumed($current, "insideChart", true, "inside");
+	    }
+
+)
+)?))
+;
+
+
+
+
+
+// Entry rule entryRuleChartAxis
+entryRuleChartAxis returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartAxisRule()); }
+	 iv_ruleChartAxis=ruleChartAxis 
+	 { $current=$iv_ruleChartAxis.current; } 
+	 EOF 
+;
+
+// Rule ChartAxis
+ruleChartAxis returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='axis' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getChartAxisAccess().getAxisKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartAxisRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='renders' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getChartAxisAccess().getRendersKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); 
+	    }
+		lv_renderType_3_0=ruleRenderTypeEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartAxisRule());
+	        }
+       		set(
+       			$current, 
+       			"renderType",
+        		lv_renderType_3_0, 
+        		"RenderTypeEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_shortLabel_4_0=	'shortLabel' 
+    {
+        newLeafNode(lv_shortLabel_4_0, grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartAxisRule());
+	        }
+       		setWithLastConsumed($current, "shortLabel", true, "shortLabel");
+	    }
+
+)
+)?(	otherlv_5='tickangle' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getChartAxisAccess().getTickangleKeyword_5_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); 
+	    }
+		lv_angle_6_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartAxisRule());
+	        }
+       		set(
+       			$current, 
+       			"angle",
+        		lv_angle_6_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleChartRangeElement
+entryRuleChartRangeElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartRangeElementRule()); }
+	 iv_ruleChartRangeElement=ruleChartRangeElement 
+	 { $current=$iv_ruleChartRangeElement.current; } 
+	 EOF 
+;
+
+// Rule ChartRangeElement
+ruleChartRangeElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
+    }
+    this_ChartSegmentColor_0=ruleChartSegmentColor
+    { 
+        $current = $this_ChartSegmentColor_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleChartSegmentColor
+entryRuleChartSegmentColor returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartSegmentColorRule()); }
+	 iv_ruleChartSegmentColor=ruleChartSegmentColor 
+	 { $current=$iv_ruleChartSegmentColor.current; } 
+	 EOF 
+;
+
+// Rule ChartSegmentColor
+ruleChartSegmentColor returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='segmentcolor' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0());
+    }
+(
+(
+		lv_rgb_1_0=RULE_STRING
+		{
+			newLeafNode(lv_rgb_1_0, grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getChartSegmentColorRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"rgb",
+        		lv_rgb_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleChartImport
+entryRuleChartImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartImportRule()); }
+	 iv_ruleChartImport=ruleChartImport 
+	 { $current=$iv_ruleChartImport.current; } 
+	 EOF 
+;
+
+// Rule ChartImport
+ruleChartImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getChartImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getChartImportAccess().getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleChartQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getChartImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"ChartQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleSignedNumber
+entryRuleSignedNumber returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSignedNumberRule()); } 
+	 iv_ruleSignedNumber=ruleSignedNumber 
+	 { $current=$iv_ruleSignedNumber.current.getText(); }  
+	 EOF 
+;
+
+// Rule SignedNumber
+ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
+    }
+)?    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); 
+    }
+)?
+    ;
+
+
+
+
+
+// Entry rule entryRuleChartQualifiedNameWithWildCard
+entryRuleChartQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardRule()); } 
+	 iv_ruleChartQualifiedNameWithWildCard=ruleChartQualifiedNameWithWildCard 
+	 { $current=$iv_ruleChartQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule ChartQualifiedNameWithWildCard
+ruleChartQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleTRANSLATABLESTRING
+entryRuleTRANSLATABLESTRING returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); } 
+	 iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING 
+	 { $current=$iv_ruleTRANSLATABLESTRING.current.getText(); }  
+	 EOF 
+;
+
+// Rule TRANSLATABLESTRING
+ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_STRING_0=RULE_STRING    {
+		$current.merge(this_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID 
+	 { $current=$iv_ruleTRANSLATABLEID.current.getText(); }  
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule 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 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 LegendPlacementEnum
+ruleLegendPlacementEnum returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='inside' 
+	{
+        $current = grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='inside-grid' 
+	{
+        $current = grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='outside' 
+	{
+        $current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='outside-grid' 
+	{
+        $current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); 
+    }
+));
+
+
+
+// Rule ToggleTypeEnum
+ruleToggleTypeEnum returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='normal' 
+	{
+        $current = grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='slow' 
+	{
+        $current = grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='fast' 
+	{
+        $current = grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); 
+    }
+));
+
+
+
+// Rule TooltipLocationEnum
+ruleTooltipLocationEnum returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='north' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='north-east' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='east' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='south-east' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='south' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='south-west' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); 
+    }
+)
+    |(	enumLiteral_6='west' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_6, grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); 
+    }
+)
+    |(	enumLiteral_7='north-west' 
+	{
+        $current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_7, grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); 
+    }
+));
+
+
+
+// Rule RenderTypeEnum
+ruleRenderTypeEnum returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='category' 
+	{
+        $current = grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='linear' 
+	{
+        $current = grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='date' 
+	{
+        $current = grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='logarithmic' 
+	{
+        $current = grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='pyramid' 
+	{
+        $current = grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); 
+    }
+));
+
+
+
+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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens
new file mode 100644
index 0000000..b5e05bc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens
@@ -0,0 +1,289 @@
+'!'=99
+'!='=85
+'!=='=87
+'#'=71
+'%'=98
+'%='=78
+'&&'=83
+'&'=133
+'('=67
+')'=69
+'*'=65
+'**'=96
+'*='=76
+'+'=95
+'++'=100
+'+='=74
+','=68
+'-'=63
+'--'=101
+'-='=75
+'->'=89
+'.'=64
+'..'=91
+'..<'=90
+'/'=97
+'/='=77
+':'=109
+'::'=102
+';'=105
+'<'=79
+'<>'=93
+'='=70
+'=='=84
+'==='=86
+'=>'=92
+'>'=80
+'>='=81
+'?'=132
+'?.'=103
+'?:'=94
+'@'=66
+'['=72
+']'=73
+'always'=55
+'animated'=23
+'as'=18
+'axis'=57
+'bar'=21
+'bubble'=37
+'case'=111
+'catch'=131
+'category'=148
+'chart'=16
+'collapsible'=49
+'cursor'=29
+'datamart'=51
+'date'=150
+'default'=110
+'described by'=17
+'do'=114
+'donut'=36
+'east'=142
+'else'=107
+'empty'=35
+'extends'=117
+'extension'=119
+'false'=122
+'fast'=139
+'fillZero'=32
+'filled'=33
+'finally'=129
+'for'=112
+'gauge'=41
+'gradient'=39
+'hasTicks'=43
+'if'=106
+'import'=62
+'inside'=56
+'inside-grid'=134
+'instanceof'=88
+'intervals'=46
+'label'=42
+'legend'=52
+'line'=26
+'linear'=149
+'logarithmic'=151
+'map'=48
+'maximum'=45
+'minimum'=44
+'multiplier'=38
+'new'=121
+'normal'=137
+'north'=140
+'north-east'=141
+'north-west'=147
+'null'=124
+'outside'=135
+'outside-grid'=136
+'package'=13
+'pie'=34
+'polling'=19
+'pyramid'=152
+'renders'=58
+'replot'=54
+'return'=127
+'segmentcolor'=61
+'shaded'=22
+'shortLabel'=59
+'showMarker'=27
+'slow'=138
+'south'=144
+'south-east'=143
+'south-west'=145
+'stacked'=25
+'static'=118
+'super'=120
+'swapped'=24
+'switch'=108
+'synchronized'=130
+'throw'=126
+'tickangle'=60
+'toggle'=53
+'tooltip'=31
+'transparent'=40
+'tree'=47
+'trendLine'=28
+'true'=123
+'try'=128
+'typeof'=125
+'up to'=50
+'using'=20
+'val'=116
+'var'=115
+'west'=146
+'while'=113
+'zoom'=30
+'{'=14
+'|'=104
+'||'=82
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=6
+RULE_INT=4
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java
new file mode 100644
index 0000000..403b604
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java
@@ -0,0 +1,6025 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.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 InternalChartDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int RULE_HEX=7;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__152=152;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalChartDSLLexer() {;} 
+    public InternalChartDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalChartDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:14:7: ( 'chart' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:14:9: 'chart'
+            {
+            match("chart"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:15:7: ( 'described by' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:15:9: 'described by'
+            {
+            match("described by"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:16:7: ( 'as' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:16:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:17:7: ( 'polling' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:17:9: 'polling'
+            {
+            match("polling"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:18:7: ( 'using' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:18:9: 'using'
+            {
+            match("using"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:19:7: ( 'bar' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:19:9: 'bar'
+            {
+            match("bar"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:20:7: ( 'shaded' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:20:9: 'shaded'
+            {
+            match("shaded"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:21:7: ( 'animated' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:21:9: 'animated'
+            {
+            match("animated"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:22:7: ( 'swapped' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:22:9: 'swapped'
+            {
+            match("swapped"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:23:7: ( 'stacked' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:23:9: 'stacked'
+            {
+            match("stacked"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:24:7: ( 'line' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:24:9: 'line'
+            {
+            match("line"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:25:7: ( 'showMarker' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:25:9: 'showMarker'
+            {
+            match("showMarker"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:26:7: ( 'trendLine' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:26:9: 'trendLine'
+            {
+            match("trendLine"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:27:7: ( 'cursor' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:27:9: 'cursor'
+            {
+            match("cursor"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:28:7: ( 'zoom' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:28:9: 'zoom'
+            {
+            match("zoom"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:29:7: ( 'tooltip' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:29:9: 'tooltip'
+            {
+            match("tooltip"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:30:7: ( 'fillZero' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:30:9: 'fillZero'
+            {
+            match("fillZero"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:31:7: ( 'filled' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:31:9: 'filled'
+            {
+            match("filled"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:32:7: ( 'pie' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:32:9: 'pie'
+            {
+            match("pie"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:33:7: ( 'empty' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:33:9: 'empty'
+            {
+            match("empty"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:34:7: ( 'donut' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:34:9: 'donut'
+            {
+            match("donut"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:35:7: ( 'bubble' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:35:9: 'bubble'
+            {
+            match("bubble"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:36:7: ( 'multiplier' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:36:9: 'multiplier'
+            {
+            match("multiplier"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:37:7: ( 'gradient' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:37:9: 'gradient'
+            {
+            match("gradient"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:38:7: ( 'transparent' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:38:9: 'transparent'
+            {
+            match("transparent"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:39:7: ( 'gauge' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:39:9: 'gauge'
+            {
+            match("gauge"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:40:7: ( 'label' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:40:9: 'label'
+            {
+            match("label"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:41:7: ( 'hasTicks' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:41:9: 'hasTicks'
+            {
+            match("hasTicks"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:42:7: ( 'minimum' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:42:9: 'minimum'
+            {
+            match("minimum"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:43:7: ( 'maximum' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:43:9: 'maximum'
+            {
+            match("maximum"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:44:7: ( 'intervals' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:44:9: 'intervals'
+            {
+            match("intervals"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:45:7: ( 'tree' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:45:9: 'tree'
+            {
+            match("tree"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:46:7: ( 'map' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:46:9: 'map'
+            {
+            match("map"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:47:7: ( 'collapsible' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:47:9: 'collapsible'
+            {
+            match("collapsible"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:48:7: ( 'up to' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:48:9: 'up to'
+            {
+            match("up to"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:49:7: ( 'datamart' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:49:9: 'datamart'
+            {
+            match("datamart"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:50:7: ( 'legend' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:50:9: 'legend'
+            {
+            match("legend"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:51:7: ( 'toggle' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:51:9: 'toggle'
+            {
+            match("toggle"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:52:7: ( 'replot' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:52:9: 'replot'
+            {
+            match("replot"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:53:7: ( 'always' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:53:9: 'always'
+            {
+            match("always"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:54:7: ( 'inside' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:54:9: 'inside'
+            {
+            match("inside"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:55:7: ( 'axis' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:55:9: 'axis'
+            {
+            match("axis"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:56:7: ( 'renders' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:56:9: 'renders'
+            {
+            match("renders"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:57:7: ( 'shortLabel' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:57:9: 'shortLabel'
+            {
+            match("shortLabel"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:58:7: ( 'tickangle' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:58:9: 'tickangle'
+            {
+            match("tickangle"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:59:7: ( 'segmentcolor' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:59:9: 'segmentcolor'
+            {
+            match("segmentcolor"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:60:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:60:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:61:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:62:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:63:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:64:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:65:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:66:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:67:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:68:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:69:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:70:7: ( '[' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:71:7: ( ']' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:72:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:73:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:74:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:74:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:75:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:75:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:76:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:77:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:77:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:78:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:78:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:79:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:79:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:80:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:83:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:83:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:84:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:84:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:85:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:85:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:86:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:86:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:87:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:87:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:88:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:88:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:89:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:89:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:90:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:90:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:91:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:91:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:92:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:92:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:93:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:93:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:94:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:94:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:95:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:96:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:97:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:98:8: ( '++' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:99:8: ( '--' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:100:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:101:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:101:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:102:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:102:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:103:8: ( ';' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:103:10: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:104:8: ( 'if' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:104:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:105:8: ( 'else' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:105:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:106:8: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:106:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:107:8: ( ':' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:107:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:108:8: ( 'default' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:108:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:109:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:109:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:110:8: ( 'for' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:110:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:111:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:111:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:112:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:112:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:113:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:113:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:114:8: ( 'val' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:114:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
+    // $ANTLR start "T__117"
+    public final void mT__117() throws RecognitionException {
+        try {
+            int _type = T__117;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:115:8: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:115:10: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__117"
+
+    // $ANTLR start "T__118"
+    public final void mT__118() throws RecognitionException {
+        try {
+            int _type = T__118;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:116:8: ( 'static' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:116:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__118"
+
+    // $ANTLR start "T__119"
+    public final void mT__119() throws RecognitionException {
+        try {
+            int _type = T__119;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:117:8: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:117:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__119"
+
+    // $ANTLR start "T__120"
+    public final void mT__120() throws RecognitionException {
+        try {
+            int _type = T__120;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:118:8: ( 'super' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:118:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__120"
+
+    // $ANTLR start "T__121"
+    public final void mT__121() throws RecognitionException {
+        try {
+            int _type = T__121;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:119:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:119:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__121"
+
+    // $ANTLR start "T__122"
+    public final void mT__122() throws RecognitionException {
+        try {
+            int _type = T__122;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:8: ( 'false' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__122"
+
+    // $ANTLR start "T__123"
+    public final void mT__123() throws RecognitionException {
+        try {
+            int _type = T__123;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:121:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:121:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__123"
+
+    // $ANTLR start "T__124"
+    public final void mT__124() throws RecognitionException {
+        try {
+            int _type = T__124;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:122:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:122:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:123:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:123:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:124:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:124:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:125:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:125:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:126:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:126:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:127:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:127:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:128:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:128:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:129:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:129:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:130:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:130:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:132:8: ( 'inside-grid' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:132:10: 'inside-grid'
+            {
+            match("inside-grid"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:133:8: ( 'outside' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:133:10: 'outside'
+            {
+            match("outside"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:134:8: ( 'outside-grid' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:134:10: 'outside-grid'
+            {
+            match("outside-grid"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:135:8: ( 'normal' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:135:10: 'normal'
+            {
+            match("normal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:136:8: ( 'slow' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:136:10: 'slow'
+            {
+            match("slow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:137:8: ( 'fast' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:137:10: 'fast'
+            {
+            match("fast"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:138:8: ( 'north' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:138:10: 'north'
+            {
+            match("north"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "T__141"
+    public final void mT__141() throws RecognitionException {
+        try {
+            int _type = T__141;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:139:8: ( 'north-east' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:139:10: 'north-east'
+            {
+            match("north-east"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:140:8: ( 'east' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:140:10: 'east'
+            {
+            match("east"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:141:8: ( 'south-east' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:141:10: 'south-east'
+            {
+            match("south-east"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:142:8: ( 'south' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:142:10: 'south'
+            {
+            match("south"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:143:8: ( 'south-west' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:143:10: 'south-west'
+            {
+            match("south-west"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__145"
+
+    // $ANTLR start "T__146"
+    public final void mT__146() throws RecognitionException {
+        try {
+            int _type = T__146;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:144:8: ( 'west' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:144:10: 'west'
+            {
+            match("west"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__146"
+
+    // $ANTLR start "T__147"
+    public final void mT__147() throws RecognitionException {
+        try {
+            int _type = T__147;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:145:8: ( 'north-west' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:145:10: 'north-west'
+            {
+            match("north-west"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__147"
+
+    // $ANTLR start "T__148"
+    public final void mT__148() throws RecognitionException {
+        try {
+            int _type = T__148;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:146:8: ( 'category' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:146:10: 'category'
+            {
+            match("category"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__148"
+
+    // $ANTLR start "T__149"
+    public final void mT__149() throws RecognitionException {
+        try {
+            int _type = T__149;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:147:8: ( 'linear' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:147:10: 'linear'
+            {
+            match("linear"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__149"
+
+    // $ANTLR start "T__150"
+    public final void mT__150() throws RecognitionException {
+        try {
+            int _type = T__150;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:8: ( 'date' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:10: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__150"
+
+    // $ANTLR start "T__151"
+    public final void mT__151() throws RecognitionException {
+        try {
+            int _type = T__151;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:149:8: ( 'logarithmic' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:149:10: 'logarithmic'
+            {
+            match("logarithmic"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:150:8: ( 'pyramid' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:150:10: 'pyramid'
+            {
+            match("pyramid"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8600:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8600:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8600: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8612:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8612:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8612: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8614:16: ( . )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8614:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=149;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:903: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:912: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:921: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:934: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:942: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:954: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:970: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:986: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:994: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\72\2\uffff\20\72\1\162\1\164\1\167\4\uffff\1\176\3\uffff"+
+        "\1\u0084\1\u0088\1\u008a\1\u008c\1\u008e\1\u0090\1\u0092\1\u0094"+
+        "\1\u0097\1\u0099\1\uffff\4\72\2\u00a4\1\65\5\uffff\4\72\3\uffff"+
+        "\5\72\1\u00b4\1\72\1\u00b6\50\72\1\u00e9\1\72\4\uffff\1\u00ee\10"+
+        "\uffff\1\u00f0\26\uffff\1\u00f2\7\uffff\7\72\1\uffff\1\u00a4\4\uffff"+
+        "\2\72\1\u00fd\11\72\1\uffff\1\72\1\uffff\4\72\1\uffff\1\u010e\22"+
+        "\72\1\u0124\10\72\1\u012d\11\72\1\u0137\6\72\1\uffff\3\72\6\uffff"+
+        "\2\72\1\u0144\1\u0145\1\u0146\5\72\1\uffff\4\72\1\u0151\6\72\1\u0158"+
+        "\2\72\1\u015b\1\72\1\uffff\13\72\1\u0168\1\72\1\u016b\4\72\1\u0170"+
+        "\1\72\1\u0172\1\uffff\5\72\1\u0178\2\72\1\uffff\1\72\1\u017d\1\72"+
+        "\1\u017f\1\72\1\u0181\3\72\1\uffff\13\72\1\u0190\3\uffff\1\u0191"+
+        "\6\72\1\u0198\2\72\1\uffff\1\u019b\3\72\1\u019f\1\72\1\uffff\2\72"+
+        "\1\uffff\1\u01a3\11\72\1\u01ad\1\72\1\uffff\1\u01b0\1\72\1\uffff"+
+        "\1\u01b2\3\72\1\uffff\1\72\1\uffff\4\72\1\u01bb\1\uffff\3\72\1\u01bf"+
+        "\1\uffff\1\u01c0\1\uffff\1\72\1\uffff\4\72\1\u01c7\10\72\1\u01d0"+
+        "\2\uffff\1\72\1\u01d3\4\72\1\uffff\1\u01d8\1\72\1\uffff\3\72\1\uffff"+
+        "\2\72\1\u01df\1\uffff\1\u01e0\1\u01e1\3\72\1\u01e5\1\72\1\u01e7"+
+        "\1\72\1\uffff\1\72\2\uffff\1\u01ec\1\uffff\1\u01ed\4\72\1\u01f2"+
+        "\1\72\1\u01f4\1\uffff\1\72\1\u01f6\1\72\2\uffff\6\72\1\uffff\2\72"+
+        "\1\u0201\1\72\1\u0203\1\u0204\1\72\1\u0206\1\uffff\1\u0207\2\uffff"+
+        "\1\72\1\u020b\1\u020c\1\u020d\1\uffff\3\72\1\u0211\2\72\3\uffff"+
+        "\2\72\1\u0216\1\uffff\1\u0217\1\uffff\2\72\4\uffff\3\72\1\u021d"+
+        "\1\uffff\1\72\1\uffff\1\72\1\uffff\1\u0220\1\u0221\2\72\1\u0224"+
+        "\1\u0225\3\72\2\uffff\1\72\2\uffff\1\u022a\4\uffff\1\u022c\3\uffff"+
+        "\1\72\1\u022e\1\72\1\uffff\1\u0230\1\u0231\2\72\2\uffff\5\72\1\uffff"+
+        "\1\72\1\u023a\2\uffff\2\72\2\uffff\1\u023d\1\u023e\2\72\3\uffff"+
+        "\1\72\1\uffff\1\72\2\uffff\5\72\1\u0248\1\72\1\u024a\1\uffff\1\u024b"+
+        "\1\72\2\uffff\1\u024d\2\72\1\uffff\1\u0250\1\u0251\3\72\1\uffff"+
+        "\1\72\2\uffff\1\u0256\1\uffff\1\u0257\1\u0258\2\uffff\2\72\1\u025b"+
+        "\1\u025c\3\uffff\1\u025d\1\u025e\4\uffff";
+    static final String DFA21_eofS =
+        "\u025f\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\2\141\1\154\1\160\1\141\1\145\1\141\1\150\1"+
+        "\157\5\141\1\146\1\145\1\55\1\56\1\52\4\uffff\1\75\3\uffff\1\53"+
+        "\1\52\1\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\uffff\1\145\1\141"+
+        "\1\145\1\165\2\60\1\44\5\uffff\1\143\1\154\1\145\1\162\3\uffff\1"+
+        "\141\1\162\1\154\1\163\1\146\1\44\1\164\1\44\1\151\1\167\2\151\1"+
+        "\40\1\162\1\142\3\141\1\147\1\160\1\156\1\157\1\165\1\156\1\142"+
+        "\2\147\1\141\1\147\1\143\1\160\1\162\1\157\1\154\1\162\1\154\1\160"+
+        "\1\163\1\164\1\163\1\154\1\156\1\160\1\141\1\165\2\163\1\160\1\44"+
+        "\1\156\4\uffff\1\74\10\uffff\1\75\26\uffff\1\75\7\uffff\1\151\1"+
+        "\163\1\154\1\167\1\154\1\162\1\164\1\uffff\1\60\4\uffff\1\153\1"+
+        "\154\1\44\1\141\1\162\1\163\1\154\1\145\2\143\1\141\1\165\1\uffff"+
+        "\1\141\1\uffff\1\155\1\141\1\163\1\156\1\uffff\1\44\1\142\1\144"+
+        "\1\162\1\160\1\164\1\143\1\155\1\145\1\143\1\167\1\164\3\145\1\141"+
+        "\1\145\1\156\1\145\1\44\1\154\1\147\1\153\1\145\1\157\1\155\1\154"+
+        "\1\141\1\44\1\163\2\164\2\145\2\164\2\151\1\44\1\144\1\147\1\124"+
+        "\1\145\1\151\1\157\1\uffff\1\154\1\144\1\165\6\uffff\1\154\1\164"+
+        "\3\44\1\154\1\155\1\163\1\141\1\151\1\uffff\1\155\1\164\1\157\1"+
+        "\141\1\44\1\150\1\147\1\162\1\165\1\164\1\155\1\44\1\141\1\171\1"+
+        "\44\1\147\1\uffff\1\154\1\145\1\115\1\164\1\160\1\143\1\153\1\151"+
+        "\1\145\1\162\1\150\1\44\1\150\1\44\1\154\1\156\1\162\1\144\1\44"+
+        "\1\163\1\44\1\uffff\1\164\1\154\1\141\1\157\1\167\1\44\1\132\1\154"+
+        "\1\uffff\1\145\1\44\1\171\1\44\1\156\1\44\1\151\2\155\1\uffff\1"+
+        "\151\1\145\1\151\1\162\1\144\1\141\1\162\1\157\1\145\1\162\1\145"+
+        "\1\44\3\uffff\1\44\1\141\1\150\1\151\1\147\1\156\1\151\1\44\1\162"+
+        "\1\160\1\uffff\1\44\1\157\1\151\1\154\1\44\1\141\1\uffff\1\164\1"+
+        "\163\1\uffff\1\44\1\145\1\144\1\141\1\114\1\145\1\150\1\145\1\143"+
+        "\1\156\1\44\1\162\1\uffff\1\44\1\162\1\uffff\1\44\1\144\1\151\1"+
+        "\114\1\uffff\1\160\1\uffff\1\151\1\145\1\156\1\146\1\44\1\uffff"+
+        "\1\145\1\144\1\154\1\44\1\uffff\1\44\1\uffff\1\144\1\uffff\1\160"+
+        "\2\165\1\145\1\44\1\143\1\166\1\145\1\156\2\164\1\162\1\156\1\44"+
+        "\2\uffff\1\154\1\44\1\144\1\145\1\147\1\144\1\uffff\1\44\1\163\1"+
+        "\uffff\1\162\1\142\1\164\1\uffff\1\162\1\145\1\44\1\uffff\2\44\1"+
+        "\162\1\141\1\144\1\44\1\144\1\44\1\164\1\uffff\1\157\1\145\1\uffff"+
+        "\1\44\1\uffff\1\44\1\164\1\151\1\141\1\160\1\44\1\147\1\44\1\uffff"+
+        "\1\162\1\44\1\171\2\uffff\1\163\1\151\1\154\2\155\1\156\1\uffff"+
+        "\1\153\1\141\1\44\1\143\2\44\1\163\1\44\1\uffff\1\44\1\145\1\uffff"+
+        "\1\145\3\44\1\uffff\1\151\1\171\1\145\1\44\1\164\1\144\3\uffff\1"+
+        "\153\1\142\1\44\1\uffff\1\44\1\uffff\1\143\1\156\4\uffff\1\150\1"+
+        "\156\1\162\1\44\1\uffff\1\154\1\uffff\1\157\1\uffff\2\44\1\157\1"+
+        "\151\2\44\1\164\1\163\1\154\2\uffff\1\145\2\uffff\1\44\4\uffff\1"+
+        "\44\3\uffff\1\142\1\44\1\144\1\uffff\2\44\2\145\2\uffff\1\157\1"+
+        "\151\1\155\2\145\1\uffff\1\145\1\44\2\uffff\1\156\1\145\2\uffff"+
+        "\2\44\1\163\1\157\3\uffff\1\154\1\uffff\1\40\2\uffff\1\162\2\154"+
+        "\1\172\1\151\1\44\1\156\1\44\1\uffff\1\44\1\162\2\uffff\1\44\1\146"+
+        "\1\145\1\uffff\2\44\1\157\1\145\1\143\1\uffff\1\164\2\uffff\1\44"+
+        "\1\uffff\2\44\2\uffff\1\162\1\144\2\44\3\uffff\2\44\4\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\171\2\uffff\1\165\1\157\1\170\1\163\1\165\1\171\1\157"+
+        "\1\171\2\157\1\170\1\165\1\162\1\141\1\156\1\145\1\76\1\56\1\75"+
+        "\4\uffff\1\76\3\uffff\3\75\1\76\1\75\1\174\1\46\1\75\2\72\1\uffff"+
+        "\1\150\1\141\2\165\1\170\1\154\1\172\5\uffff\1\143\1\154\1\145\1"+
+        "\162\3\uffff\1\141\1\162\1\154\1\164\1\163\1\172\1\164\1\172\1\151"+
+        "\1\167\2\151\1\40\1\162\1\142\1\157\1\151\1\141\1\147\1\160\1\156"+
+        "\1\157\1\165\1\156\1\142\2\147\1\171\1\157\1\143\1\160\1\162\1\157"+
+        "\1\156\1\162\1\163\1\160\1\163\1\164\1\163\1\154\1\156\1\170\1\141"+
+        "\1\165\1\163\1\164\1\160\1\172\1\164\4\uffff\1\74\10\uffff\1\75"+
+        "\26\uffff\1\75\7\uffff\1\151\1\163\1\162\1\167\1\154\1\162\1\164"+
+        "\1\uffff\1\154\4\uffff\1\153\1\154\1\172\1\141\1\162\1\163\1\154"+
+        "\2\145\1\143\1\141\1\165\1\uffff\1\145\1\uffff\1\155\1\141\1\163"+
+        "\1\156\1\uffff\1\172\1\142\1\144\1\167\1\160\2\164\1\155\1\145\1"+
+        "\143\1\167\1\164\3\145\1\141\2\156\1\145\1\172\1\154\1\147\1\153"+
+        "\1\145\1\157\1\155\1\154\1\141\1\172\1\163\2\164\2\145\2\164\2\151"+
+        "\1\172\1\144\1\147\1\124\1\145\1\164\1\157\1\uffff\1\154\1\144\1"+
+        "\165\6\uffff\1\154\1\164\3\172\1\154\1\164\1\163\1\141\1\151\1\uffff"+
+        "\1\155\1\164\1\157\1\141\1\172\1\150\1\147\1\162\1\165\1\164\1\155"+
+        "\1\172\1\141\1\171\1\172\1\147\1\uffff\1\154\1\145\1\115\1\164\1"+
+        "\160\1\143\1\153\1\151\1\145\1\162\1\150\1\172\1\150\1\172\1\154"+
+        "\1\156\1\162\1\144\1\172\1\163\1\172\1\uffff\1\164\1\154\1\141\1"+
+        "\157\1\167\1\172\1\145\1\154\1\uffff\1\145\1\172\1\171\1\172\1\156"+
+        "\1\172\1\151\2\155\1\uffff\1\151\1\145\1\151\1\162\1\144\1\141\1"+
+        "\162\1\157\1\145\1\162\1\145\1\172\3\uffff\1\172\1\141\1\150\1\151"+
+        "\1\147\1\156\1\151\1\172\1\162\1\160\1\uffff\1\172\1\157\1\151\1"+
+        "\154\1\172\1\141\1\uffff\1\164\1\163\1\uffff\1\172\1\145\1\144\1"+
+        "\141\1\114\1\145\1\150\1\145\1\143\1\156\1\172\1\162\1\uffff\1\172"+
+        "\1\162\1\uffff\1\172\1\144\1\151\1\114\1\uffff\1\160\1\uffff\1\151"+
+        "\1\145\1\156\1\146\1\172\1\uffff\1\145\1\144\1\154\1\172\1\uffff"+
+        "\1\172\1\uffff\1\163\1\uffff\1\160\2\165\1\145\1\172\1\143\1\166"+
+        "\1\145\1\156\2\164\1\162\1\156\1\172\2\uffff\1\154\1\172\1\144\1"+
+        "\145\1\147\1\144\1\uffff\1\172\1\163\1\uffff\1\162\1\142\1\164\1"+
+        "\uffff\1\162\1\145\1\172\1\uffff\2\172\1\162\1\141\1\144\1\172\1"+
+        "\144\1\172\1\164\1\uffff\1\157\1\167\1\uffff\1\172\1\uffff\1\172"+
+        "\1\164\1\151\1\141\1\160\1\172\1\147\1\172\1\uffff\1\162\1\172\1"+
+        "\171\2\uffff\1\163\1\151\1\154\2\155\1\156\1\uffff\1\153\1\141\1"+
+        "\172\1\143\2\172\1\163\1\172\1\uffff\1\172\1\167\1\uffff\1\145\3"+
+        "\172\1\uffff\1\151\1\171\1\145\1\172\1\164\1\144\3\uffff\1\153\1"+
+        "\142\1\172\1\uffff\1\172\1\uffff\1\143\1\156\4\uffff\1\150\1\156"+
+        "\1\162\1\172\1\uffff\1\154\1\uffff\1\157\1\uffff\2\172\1\157\1\151"+
+        "\2\172\1\164\1\163\1\154\2\uffff\1\145\2\uffff\1\172\4\uffff\1\172"+
+        "\3\uffff\1\142\1\172\1\144\1\uffff\2\172\2\145\2\uffff\1\157\1\151"+
+        "\1\155\2\145\1\uffff\1\145\1\172\2\uffff\1\156\1\145\2\uffff\2\172"+
+        "\1\163\1\157\3\uffff\1\154\1\uffff\1\40\2\uffff\1\162\2\154\1\172"+
+        "\1\151\1\172\1\156\1\172\1\uffff\1\172\1\162\2\uffff\1\172\1\146"+
+        "\1\145\1\uffff\2\172\1\157\1\145\1\143\1\uffff\1\164\2\uffff\1\172"+
+        "\1\uffff\2\172\2\uffff\1\162\1\144\2\172\3\uffff\2\172\4\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\23\uffff\1\66\1\67\1\70\1\71\1\uffff\1\73\1\74"+
+        "\1\75\12\uffff\1\135\7\uffff\1\u0090\2\u0091\1\u0094\1\u0095\4\uffff"+
+        "\1\u0090\1\2\1\3\62\uffff\1\77\1\115\1\131\1\63\1\uffff\1\64\1\100"+
+        "\1\124\1\65\1\66\1\67\1\70\1\71\1\uffff\1\120\1\72\1\73\1\74\1\75"+
+        "\1\76\1\130\1\123\1\101\1\u0092\1\u0093\1\125\1\102\1\126\1\121"+
+        "\1\103\1\105\1\104\1\106\1\134\1\107\1\171\1\uffff\1\127\1\122\1"+
+        "\133\1\170\1\132\1\141\1\135\7\uffff\1\u008d\1\uffff\1\u008e\1\u008f"+
+        "\1\u0091\1\u0094\14\uffff\1\146\1\uffff\1\6\4\uffff\1\46\55\uffff"+
+        "\1\136\3\uffff\1\116\1\117\1\112\1\110\1\113\1\111\12\uffff\1\26"+
+        "\20\uffff\1\11\25\uffff\1\164\10\uffff\1\144\11\uffff\1\44\14\uffff"+
+        "\1\147\1\150\1\155\12\uffff\1\143\6\uffff\1\u008a\2\uffff\1\55\14"+
+        "\uffff\1\176\2\uffff\1\16\4\uffff\1\43\1\uffff\1\157\5\uffff\1\22"+
+        "\4\uffff\1\177\1\uffff\1\137\1\uffff\1\u0082\16\uffff\1\u0086\1"+
+        "\160\6\uffff\1\4\2\uffff\1\167\3\uffff\1\30\3\uffff\1\10\11\uffff"+
+        "\1\154\2\uffff\1\u0084\1\uffff\1\36\10\uffff\1\162\3\uffff\1\156"+
+        "\1\27\6\uffff\1\35\10\uffff\1\145\2\uffff\1\u0080\4\uffff\1\21\6"+
+        "\uffff\1\53\1\31\1\12\3\uffff\1\140\1\uffff\1\152\2\uffff\1\u0083"+
+        "\1\u0085\1\u0089\1\50\4\uffff\1\51\1\uffff\1\161\1\uffff\1\25\11"+
+        "\uffff\1\172\1\54\1\uffff\1\62\1\52\1\uffff\1\163\1\175\1\u0081"+
+        "\1\u0087\1\uffff\1\1\1\7\1\u008c\3\uffff\1\142\4\uffff\1\14\1\15"+
+        "\5\uffff\1\23\2\uffff\1\165\1\151\2\uffff\1\40\1\41\4\uffff\1\56"+
+        "\1\174\1\173\1\uffff\1\u0088\1\uffff\1\47\1\13\10\uffff\1\24\2\uffff"+
+        "\1\33\1\37\3\uffff\1\5\5\uffff\1\20\1\uffff\1\60\1\153\1\uffff\1"+
+        "\42\2\uffff\1\17\1\57\4\uffff\1\32\1\114\1\45\2\uffff\1\u008b\1"+
+        "\34\1\61\1\166";
+    static final String DFA21_specialS =
+        "\1\0\u025e\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\65\2\64\2\65\1\64\22\65\1\64\1\46\1\62\1\34\1\61\1\41\1"+
+            "\45\1\63\1\30\1\32\1\26\1\37\1\31\1\24\1\25\1\40\1\56\11\57"+
+            "\1\50\1\51\1\42\1\33\1\43\1\47\1\27\32\61\1\35\1\65\1\36\1\60"+
+            "\1\61\1\65\1\6\1\10\1\4\1\5\1\16\1\15\1\20\1\21\1\22\2\61\1"+
+            "\12\1\17\1\54\1\55\1\1\1\61\1\23\1\11\1\13\1\7\1\53\1\52\2\61"+
+            "\1\14\1\2\1\44\1\3\uff82\65",
+            "\1\66\7\uffff\1\70\5\uffff\1\67\11\uffff\1\71",
+            "",
+            "",
+            "\1\100\6\uffff\1\75\6\uffff\1\77\5\uffff\1\76",
+            "\1\103\3\uffff\1\101\11\uffff\1\102",
+            "\1\106\1\uffff\1\105\4\uffff\1\104\4\uffff\1\107",
+            "\1\111\2\uffff\1\110",
+            "\1\112\23\uffff\1\113",
+            "\1\117\2\uffff\1\114\3\uffff\1\122\2\uffff\1\123\4\uffff\1"+
+            "\116\1\120\1\uffff\1\115\1\uffff\1\121",
+            "\1\125\3\uffff\1\126\3\uffff\1\124\5\uffff\1\127",
+            "\1\134\1\132\5\uffff\1\131\2\uffff\1\130\6\uffff\1\133",
+            "\1\135",
+            "\1\140\7\uffff\1\136\5\uffff\1\137",
+            "\1\144\12\uffff\1\142\1\141\12\uffff\1\143",
+            "\1\147\7\uffff\1\146\13\uffff\1\145",
+            "\1\151\20\uffff\1\150",
+            "\1\152",
+            "\1\155\6\uffff\1\154\1\153",
+            "\1\156",
+            "\1\161\17\uffff\1\157\1\160",
+            "\1\163",
+            "\1\166\22\uffff\1\165",
+            "",
+            "",
+            "",
+            "",
+            "\1\174\1\175",
+            "",
+            "",
+            "",
+            "\1\u0083\21\uffff\1\u0082",
+            "\1\u0086\4\uffff\1\u0087\15\uffff\1\u0085",
+            "\1\u0089",
+            "\1\u008b",
+            "\1\u008d",
+            "\1\u008f",
+            "\1\u0091",
+            "\1\u0093",
+            "\1\u0096\13\uffff\1\u0095",
+            "\1\u0098",
+            "",
+            "\1\u009c\2\uffff\1\u009b",
+            "\1\u009d",
+            "\1\u009e\11\uffff\1\u00a0\5\uffff\1\u009f",
+            "\1\u00a1",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
+            "\13\uffff\1\u00a2\6\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3"+
+            "\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
+            "\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1"+
+            "\u00a5",
+            "\1\72\34\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00aa",
+            "\1\u00ab",
+            "",
+            "",
+            "",
+            "\1\u00ac",
+            "\1\u00ad",
+            "\1\u00ae",
+            "\1\u00af\1\u00b0",
+            "\1\u00b2\14\uffff\1\u00b1",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\15"+
+            "\72\1\u00b3\14\72",
+            "\1\u00b5",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be\15\uffff\1\u00bf",
+            "\1\u00c0\7\uffff\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cd\3\uffff\1\u00cc\17\uffff\1\u00ce\3\uffff\1\u00cf",
+            "\1\u00d1\7\uffff\1\u00d0",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6\1\uffff\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9\6\uffff\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e2\7\uffff\1\u00e1",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e7\1\u00e6",
+            "\1\u00e8",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u00eb\1\uffff\1\u00ea\3\uffff\1\u00ec",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ed",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ef",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f6\5\uffff\1\u00f5",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
+            "\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1"+
+            "\u00a5",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103\1\uffff\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "",
+            "\1\u0108\3\uffff\1\u0109",
+            "",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0112\4\uffff\1\u0111",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115\20\uffff\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0121\10\uffff\1\u0120",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c\12\uffff\1\u013d",
+            "\1\u013e",
+            "",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0147",
+            "\1\u0148\6\uffff\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u015c",
+            "",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0169",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\1"+
+            "\u016a\31\72",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0171",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0179\12\uffff\1\u017a",
+            "\1\u017b",
+            "",
+            "\1\u017c",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u017e",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0180",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0199",
+            "\1\u019a",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01a0",
+            "",
+            "\1\u01a1",
+            "\1\u01a2",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01ae",
+            "",
+            "\1\72\10\uffff\1\u01af\2\uffff\12\72\7\uffff\32\72\4\uffff"+
+            "\1\72\1\uffff\32\72",
+            "\1\u01b1",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\u01b5",
+            "",
+            "\1\u01b6",
+            "",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u01c1\16\uffff\1\u01c2",
+            "",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "\1\u01d1",
+            "\1\72\10\uffff\1\u01d2\2\uffff\12\72\7\uffff\32\72\4\uffff"+
+            "\1\72\1\uffff\32\72",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01d9",
+            "",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01e6",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01e8",
+            "",
+            "\1\u01e9",
+            "\1\u01ea\21\uffff\1\u01eb",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01f3",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u01f5",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u01f7",
+            "",
+            "",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\72\10\uffff\1\u0200\2\uffff\12\72\7\uffff\32\72\4\uffff"+
+            "\1\72\1\uffff\32\72",
+            "\1\u0202",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0205",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0208\21\uffff\1\u0209",
+            "",
+            "\1\u020a",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\u0210",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0212",
+            "\1\u0213",
+            "",
+            "",
+            "",
+            "\1\u0214",
+            "\1\u0215",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u0218",
+            "\1\u0219",
+            "",
+            "",
+            "",
+            "",
+            "\1\u021a",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\u021e",
+            "",
+            "\1\u021f",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "",
+            "",
+            "\1\u0229",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "",
+            "",
+            "\1\72\10\uffff\1\u022b\2\uffff\12\72\7\uffff\32\72\4\uffff"+
+            "\1\72\1\uffff\32\72",
+            "",
+            "",
+            "",
+            "\1\u022d",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u022f",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0232",
+            "\1\u0233",
+            "",
+            "",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\u0238",
+            "",
+            "\1\u0239",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "\1\u023b",
+            "\1\u023c",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u023f",
+            "\1\u0240",
+            "",
+            "",
+            "",
+            "\1\u0241",
+            "",
+            "\1\u0242",
+            "",
+            "",
+            "\1\u0243",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0249",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u024c",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u024e",
+            "\1\u024f",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "",
+            "\1\u0255",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "\1\u0259",
+            "\1\u025a",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
+            "\72",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='p') ) {s = 1;}
+
+                        else if ( (LA21_0=='{') ) {s = 2;}
+
+                        else if ( (LA21_0=='}') ) {s = 3;}
+
+                        else if ( (LA21_0=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='d') ) {s = 5;}
+
+                        else if ( (LA21_0=='a') ) {s = 6;}
+
+                        else if ( (LA21_0=='u') ) {s = 7;}
+
+                        else if ( (LA21_0=='b') ) {s = 8;}
+
+                        else if ( (LA21_0=='s') ) {s = 9;}
+
+                        else if ( (LA21_0=='l') ) {s = 10;}
+
+                        else if ( (LA21_0=='t') ) {s = 11;}
+
+                        else if ( (LA21_0=='z') ) {s = 12;}
+
+                        else if ( (LA21_0=='f') ) {s = 13;}
+
+                        else if ( (LA21_0=='e') ) {s = 14;}
+
+                        else if ( (LA21_0=='m') ) {s = 15;}
+
+                        else if ( (LA21_0=='g') ) {s = 16;}
+
+                        else if ( (LA21_0=='h') ) {s = 17;}
+
+                        else if ( (LA21_0=='i') ) {s = 18;}
+
+                        else if ( (LA21_0=='r') ) {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=='+') ) {s = 31;}
+
+                        else if ( (LA21_0=='/') ) {s = 32;}
+
+                        else if ( (LA21_0=='%') ) {s = 33;}
+
+                        else if ( (LA21_0=='<') ) {s = 34;}
+
+                        else if ( (LA21_0=='>') ) {s = 35;}
+
+                        else if ( (LA21_0=='|') ) {s = 36;}
+
+                        else if ( (LA21_0=='&') ) {s = 37;}
+
+                        else if ( (LA21_0=='!') ) {s = 38;}
+
+                        else if ( (LA21_0=='?') ) {s = 39;}
+
+                        else if ( (LA21_0==':') ) {s = 40;}
+
+                        else if ( (LA21_0==';') ) {s = 41;}
+
+                        else if ( (LA21_0=='w') ) {s = 42;}
+
+                        else if ( (LA21_0=='v') ) {s = 43;}
+
+                        else if ( (LA21_0=='n') ) {s = 44;}
+
+                        else if ( (LA21_0=='o') ) {s = 45;}
+
+                        else if ( (LA21_0=='0') ) {s = 46;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 47;}
+
+                        else if ( (LA21_0=='^') ) {s = 48;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||(LA21_0>='j' && LA21_0<='k')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='y')) ) {s = 49;}
+
+                        else if ( (LA21_0=='\"') ) {s = 50;}
+
+                        else if ( (LA21_0=='\'') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 52;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 53;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java
new file mode 100644
index 0000000..d813bed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+
+
+
+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 InternalChartDSLParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'chart'", "'described by'", "'as'", "'polling'", "'using'", "'bar'", "'shaded'", "'animated'", "'swapped'", "'stacked'", "'line'", "'showMarker'", "'trendLine'", "'cursor'", "'zoom'", "'tooltip'", "'fillZero'", "'filled'", "'pie'", "'empty'", "'donut'", "'bubble'", "'multiplier'", "'gradient'", "'transparent'", "'gauge'", "'label'", "'hasTicks'", "'minimum'", "'maximum'", "'intervals'", "'tree'", "'map'", "'collapsible'", "'up to'", "'datamart'", "'legend'", "'toggle'", "'replot'", "'always'", "'inside'", "'axis'", "'renders'", "'shortLabel'", "'tickangle'", "'segmentcolor'", "'import'", "'-'", "'.'", "'*'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'::'", "'?.'", "'|'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'inside-grid'", "'outside'", "'outside-grid'", "'normal'", "'slow'", "'fast'", "'north'", "'north-east'", "'east'", "'south-east'", "'south'", "'south-west'", "'west'", "'north-west'", "'category'", "'linear'", "'date'", "'logarithmic'", "'pyramid'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int RULE_HEX=7;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__152=152;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalChartDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalChartDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalChartDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g"; }
+
+
+
+     	private ChartDSLGrammarAccess grammarAccess;
+     	
+        public InternalChartDSLParser(TokenStream input, ChartDSLGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "ChartModel";	
+       	}
+       	
+       	@Override
+       	protected ChartDSLGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleChartModel"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:68:1: entryRuleChartModel returns [EObject current=null] : iv_ruleChartModel= ruleChartModel EOF ;
+    public final EObject entryRuleChartModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:69:2: (iv_ruleChartModel= ruleChartModel EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:70:2: iv_ruleChartModel= ruleChartModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartModel_in_entryRuleChartModel75);
+            iv_ruleChartModel=ruleChartModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartModel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartModel"
+
+
+    // $ANTLR start "ruleChartModel"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:77:1: ruleChartModel returns [EObject current=null] : ( (lv_packages_0_0= ruleChartPackage ) )* ;
+    public final EObject ruleChartModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:80:28: ( ( (lv_packages_0_0= ruleChartPackage ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:1: ( (lv_packages_0_0= ruleChartPackage ) )*
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:1: ( (lv_packages_0_0= ruleChartPackage ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==13) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:1: (lv_packages_0_0= ruleChartPackage )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:1: (lv_packages_0_0= ruleChartPackage )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:83:3: lv_packages_0_0= ruleChartPackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleChartPackage_in_ruleChartModel130);
+            	    lv_packages_0_0=ruleChartPackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getChartModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"ChartPackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartModel"
+
+
+    // $ANTLR start "entryRuleChartPackage"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:107:1: entryRuleChartPackage returns [EObject current=null] : iv_ruleChartPackage= ruleChartPackage EOF ;
+    public final EObject entryRuleChartPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:108:2: (iv_ruleChartPackage= ruleChartPackage EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:109:2: iv_ruleChartPackage= ruleChartPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartPackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartPackage_in_entryRuleChartPackage166);
+            iv_ruleChartPackage=ruleChartPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartPackage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartPackage176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartPackage"
+
+
+    // $ANTLR start "ruleChartPackage"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:116:1: ruleChartPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleChartPackage() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        EObject lv_imports_4_0 = null;
+
+        EObject lv_charts_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartPackageAccess().getChartPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleChartPackage222); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartPackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:132:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleChartPackage243);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==14) ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleChartPackage256); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:152:1: ( (lv_imports_4_0= ruleChartImport ) )*
+                    loop2:
+                    do {
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
+
+                        if ( (LA2_0==62) ) {
+                            alt2=1;
+                        }
+
+
+                        switch (alt2) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:153:1: (lv_imports_4_0= ruleChartImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:153:1: (lv_imports_4_0= ruleChartImport )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:154:3: lv_imports_4_0= ruleChartImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getChartPackageAccess().getImportsChartImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleChartImport_in_ruleChartPackage277);
+                    	    lv_imports_4_0=ruleChartImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getChartPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"ChartImport");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop2;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:170:3: ( (lv_charts_5_0= ruleChart ) )*
+                    loop3:
+                    do {
+                        int alt3=2;
+                        int LA3_0 = input.LA(1);
+
+                        if ( (LA3_0==16) ) {
+                            alt3=1;
+                        }
+
+
+                        switch (alt3) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:171:1: (lv_charts_5_0= ruleChart )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:171:1: (lv_charts_5_0= ruleChart )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:172:3: lv_charts_5_0= ruleChart
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleChart_in_ruleChartPackage299);
+                    	    lv_charts_5_0=ruleChart();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getChartPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"charts",
+                    	              		lv_charts_5_0, 
+                    	              		"Chart");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleChartPackage312); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartPackage"
+
+
+    // $ANTLR start "entryRuleChart"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:200:1: entryRuleChart returns [EObject current=null] : iv_ruleChart= ruleChart EOF ;
+    public final EObject entryRuleChart() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChart = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:201:2: (iv_ruleChart= ruleChart EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:202:2: iv_ruleChart= ruleChart EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartRule()); 
+            }
+            pushFollow(FOLLOW_ruleChart_in_entryRuleChart350);
+            iv_ruleChart=ruleChart();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChart; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChart360); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChart"
+
+
+    // $ANTLR start "ruleChart"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:209:1: ruleChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? ) ;
+    public final EObject ruleChart() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_description_3_0=null;
+        Token otherlv_5=null;
+        Token lv_polling_7_0=null;
+        Token lv_pollingTime_8_0=null;
+        Token otherlv_9=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        AntlrDatatypeRuleToken lv_descriptionValue_4_0 = null;
+
+        EObject lv_charttype_6_0 = null;
+
+        EObject lv_source_10_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:212:28: ( ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:1: ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:1: ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:2: () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:214:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartAccess().getChartAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleChart406); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartAccess().getChartKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:223:1: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:224:1: (lv_name_2_0= ruleTRANSLATABLEID )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:224:1: (lv_name_2_0= ruleTRANSLATABLEID )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:225:3: lv_name_2_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleChart427);
+            lv_name_2_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"TRANSLATABLEID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:241:2: ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==17) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:241:3: ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:241:3: ( (lv_description_3_0= 'described by' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:242:1: (lv_description_3_0= 'described by' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:242:1: (lv_description_3_0= 'described by' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:243:3: lv_description_3_0= 'described by'
+                    {
+                    lv_description_3_0=(Token)match(input,17,FOLLOW_17_in_ruleChart446); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_description_3_0, grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartRule());
+                      	        }
+                             		setWithLastConsumed(current, "description", true, "described by");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:256:2: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:257:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:257:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:258:3: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleChart480);
+                    lv_descriptionValue_4_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getChartRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"descriptionValue",
+                              		lv_descriptionValue_4_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleChart494); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getChartAccess().getAsKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:278:1: ( (lv_charttype_6_0= ruleChartOption ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:279:1: (lv_charttype_6_0= ruleChartOption )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:279:1: (lv_charttype_6_0= ruleChartOption )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:280:3: lv_charttype_6_0= ruleChartOption
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleChartOption_in_ruleChart515);
+            lv_charttype_6_0=ruleChartOption();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"charttype",
+                      		lv_charttype_6_0, 
+                      		"ChartOption");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:296:2: ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==19) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:296:3: ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:296:3: ( (lv_polling_7_0= 'polling' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:297:1: (lv_polling_7_0= 'polling' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:297:1: (lv_polling_7_0= 'polling' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:298:3: lv_polling_7_0= 'polling'
+                    {
+                    lv_polling_7_0=(Token)match(input,19,FOLLOW_19_in_ruleChart534); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_polling_7_0, grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartRule());
+                      	        }
+                             		setWithLastConsumed(current, "polling", true, "polling");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:311:2: ( (lv_pollingTime_8_0= RULE_INT ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:312:1: (lv_pollingTime_8_0= RULE_INT )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:312:1: (lv_pollingTime_8_0= RULE_INT )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:313:3: lv_pollingTime_8_0= RULE_INT
+                    {
+                    lv_pollingTime_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleChart564); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(lv_pollingTime_8_0, grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_1_0()); 
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartRule());
+                      	        }
+                             		setWithLastConsumed(
+                             			current, 
+                             			"pollingTime",
+                              		lv_pollingTime_8_0, 
+                              		"INT");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:329:4: (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==20) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:329:6: otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) )
+                    {
+                    otherlv_9=(Token)match(input,20,FOLLOW_20_in_ruleChart584); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_9, grammarAccess.getChartAccess().getUsingKeyword_7_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:333:1: ( (lv_source_10_0= ruleChartDatamart ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:334:1: (lv_source_10_0= ruleChartDatamart )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:334:1: (lv_source_10_0= ruleChartDatamart )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:335:3: lv_source_10_0= ruleChartDatamart
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleChartDatamart_in_ruleChart605);
+                    lv_source_10_0=ruleChartDatamart();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getChartRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"source",
+                              		lv_source_10_0, 
+                              		"ChartDatamart");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChart"
+
+
+    // $ANTLR start "entryRuleChartOption"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:359:1: entryRuleChartOption returns [EObject current=null] : iv_ruleChartOption= ruleChartOption EOF ;
+    public final EObject entryRuleChartOption() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartOption = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:360:2: (iv_ruleChartOption= ruleChartOption EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:361:2: iv_ruleChartOption= ruleChartOption EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartOptionRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartOption_in_entryRuleChartOption643);
+            iv_ruleChartOption=ruleChartOption();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartOption; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartOption653); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartOption"
+
+
+    // $ANTLR start "ruleChartOption"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:368:1: ruleChartOption returns [EObject current=null] : (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree ) ;
+    public final EObject ruleChartOption() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ChartBar_0 = null;
+
+        EObject this_ChartLine_1 = null;
+
+        EObject this_ChartPie_2 = null;
+
+        EObject this_ChartDonut_3 = null;
+
+        EObject this_ChartBubble_4 = null;
+
+        EObject this_ChartGauge_5 = null;
+
+        EObject this_ChartTree_6 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:371:28: ( (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:372:1: (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:372:1: (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree )
+            int alt8=7;
+            switch ( input.LA(1) ) {
+            case 21:
+                {
+                alt8=1;
+                }
+                break;
+            case 26:
+                {
+                alt8=2;
+                }
+                break;
+            case 34:
+                {
+                alt8=3;
+                }
+                break;
+            case 36:
+                {
+                alt8=4;
+                }
+                break;
+            case 37:
+                {
+                alt8=5;
+                }
+                break;
+            case 41:
+                {
+                alt8=6;
+                }
+                break;
+            case 47:
+                {
+                alt8=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:373:5: this_ChartBar_0= ruleChartBar
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartBar_in_ruleChartOption700);
+                    this_ChartBar_0=ruleChartBar();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartBar_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:383:5: this_ChartLine_1= ruleChartLine
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartLine_in_ruleChartOption727);
+                    this_ChartLine_1=ruleChartLine();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartLine_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:393:5: this_ChartPie_2= ruleChartPie
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartPie_in_ruleChartOption754);
+                    this_ChartPie_2=ruleChartPie();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartPie_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:403:5: this_ChartDonut_3= ruleChartDonut
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartDonut_in_ruleChartOption781);
+                    this_ChartDonut_3=ruleChartDonut();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartDonut_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:413:5: this_ChartBubble_4= ruleChartBubble
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartBubble_in_ruleChartOption808);
+                    this_ChartBubble_4=ruleChartBubble();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartBubble_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:423:5: this_ChartGauge_5= ruleChartGauge
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartGauge_in_ruleChartOption835);
+                    this_ChartGauge_5=ruleChartGauge();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartGauge_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:433:5: this_ChartTree_6= ruleChartTree
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartTree_in_ruleChartOption862);
+                    this_ChartTree_6=ruleChartTree();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartTree_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartOption"
+
+
+    // $ANTLR start "entryRuleChartBar"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:449:1: entryRuleChartBar returns [EObject current=null] : iv_ruleChartBar= ruleChartBar EOF ;
+    public final EObject entryRuleChartBar() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartBar = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:450:2: (iv_ruleChartBar= ruleChartBar EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:451:2: iv_ruleChartBar= ruleChartBar EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartBarRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartBar_in_entryRuleChartBar897);
+            iv_ruleChartBar=ruleChartBar();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartBar; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartBar907); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartBar"
+
+
+    // $ANTLR start "ruleChartBar"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:458:1: ruleChartBar returns [EObject current=null] : ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) ) ;
+    public final EObject ruleChartBar() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_shadow_3_0=null;
+        Token lv_animated_4_0=null;
+        Token lv_swapped_5_0=null;
+        Token lv_stacked_6_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:461:28: ( ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:1: ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:1: ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:2: () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:463:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartBarAccess().getChartBarAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleChartBar953); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartBarAccess().getBarKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:472:1: ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:474:1: ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:474:1: ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:475:2: ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:478:2: ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:479:3: ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )*
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:479:3: ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )*
+            loop9:
+            do {
+                int alt9=5;
+                int LA9_0 = input.LA(1);
+
+                if ( LA9_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                    alt9=1;
+                }
+                else if ( LA9_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                    alt9=2;
+                }
+                else if ( LA9_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                    alt9=3;
+                }
+                else if ( LA9_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                    alt9=4;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:481:4: ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:481:4: ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:482:5: {...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:482:105: ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:483:6: ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:486:6: ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:486:7: {...}? => ( (lv_shadow_3_0= 'shaded' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:486:16: ( (lv_shadow_3_0= 'shaded' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:487:1: (lv_shadow_3_0= 'shaded' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:487:1: (lv_shadow_3_0= 'shaded' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:488:3: lv_shadow_3_0= 'shaded'
+            	    {
+            	    lv_shadow_3_0=(Token)match(input,22,FOLLOW_22_in_ruleChartBar1016); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_shadow_3_0, grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartBarRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "shadow", true, "shaded");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:508:4: ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:508:4: ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:509:5: {...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:509:105: ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:510:6: ({...}? => ( (lv_animated_4_0= 'animated' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:513:6: ({...}? => ( (lv_animated_4_0= 'animated' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:513:7: {...}? => ( (lv_animated_4_0= 'animated' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:513:16: ( (lv_animated_4_0= 'animated' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:514:1: (lv_animated_4_0= 'animated' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:514:1: (lv_animated_4_0= 'animated' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:515:3: lv_animated_4_0= 'animated'
+            	    {
+            	    lv_animated_4_0=(Token)match(input,23,FOLLOW_23_in_ruleChartBar1101); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_animated_4_0, grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartBarRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "animated", true, "animated");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:535:4: ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:535:4: ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:536:5: {...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:536:105: ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:537:6: ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:540:6: ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:540:7: {...}? => ( (lv_swapped_5_0= 'swapped' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:540:16: ( (lv_swapped_5_0= 'swapped' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:541:1: (lv_swapped_5_0= 'swapped' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:541:1: (lv_swapped_5_0= 'swapped' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:542:3: lv_swapped_5_0= 'swapped'
+            	    {
+            	    lv_swapped_5_0=(Token)match(input,24,FOLLOW_24_in_ruleChartBar1186); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_swapped_5_0, grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartBarRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "swapped", true, "swapped");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 4 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:562:4: ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:562:4: ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:563:5: {...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:563:105: ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:564:6: ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:567:6: ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:567:7: {...}? => ( (lv_stacked_6_0= 'stacked' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartBar", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:567:16: ( (lv_stacked_6_0= 'stacked' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:568:1: (lv_stacked_6_0= 'stacked' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:568:1: (lv_stacked_6_0= 'stacked' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:569:3: lv_stacked_6_0= 'stacked'
+            	    {
+            	    lv_stacked_6_0=(Token)match(input,25,FOLLOW_25_in_ruleChartBar1271); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_stacked_6_0, grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartBarRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "stacked", true, "stacked");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop9;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartBar"
+
+
+    // $ANTLR start "entryRuleChartLine"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:604:1: entryRuleChartLine returns [EObject current=null] : iv_ruleChartLine= ruleChartLine EOF ;
+    public final EObject entryRuleChartLine() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartLine = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:605:2: (iv_ruleChartLine= ruleChartLine EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:606:2: iv_ruleChartLine= ruleChartLine EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartLineRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartLine_in_entryRuleChartLine1360);
+            iv_ruleChartLine=ruleChartLine();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartLine; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartLine1370); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartLine"
+
+
+    // $ANTLR start "ruleChartLine"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:613:1: ruleChartLine returns [EObject current=null] : ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) ) ;
+    public final EObject ruleChartLine() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_animated_3_0=null;
+        Token lv_showMarker_4_0=null;
+        Token lv_trendLine_5_0=null;
+        Token lv_cursor_6_0=null;
+        Token lv_zoom_7_0=null;
+        Token lv_tooltip_8_0=null;
+        Token lv_fillToZero_9_0=null;
+        Token lv_fillArea_10_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:616:28: ( ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:1: ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:1: ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:2: () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:618:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartLineAccess().getChartLineAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleChartLine1416); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartLineAccess().getLineKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:627:1: ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:629:1: ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:629:1: ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:630:2: ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:633:2: ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:634:3: ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )*
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:634:3: ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )*
+            loop12:
+            do {
+                int alt12=7;
+                int LA12_0 = input.LA(1);
+
+                if ( LA12_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                    alt12=1;
+                }
+                else if ( LA12_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                    alt12=2;
+                }
+                else if ( LA12_0 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                    alt12=3;
+                }
+                else if ( LA12_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                    alt12=4;
+                }
+                else if ( LA12_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                    alt12=5;
+                }
+                else if ( LA12_0 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                    alt12=6;
+                }
+
+
+                switch (alt12) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:636:4: ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:636:4: ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:637:5: {...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:637:106: ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:638:6: ({...}? => ( (lv_animated_3_0= 'animated' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:641:6: ({...}? => ( (lv_animated_3_0= 'animated' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:641:7: {...}? => ( (lv_animated_3_0= 'animated' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:641:16: ( (lv_animated_3_0= 'animated' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:642:1: (lv_animated_3_0= 'animated' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:642:1: (lv_animated_3_0= 'animated' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:643:3: lv_animated_3_0= 'animated'
+            	    {
+            	    lv_animated_3_0=(Token)match(input,23,FOLLOW_23_in_ruleChartLine1479); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_animated_3_0, grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartLineRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "animated", true, "animated");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:663:4: ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:663:4: ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:664:5: {...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:664:106: ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:665:6: ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:668:6: ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:668:7: {...}? => ( (lv_showMarker_4_0= 'showMarker' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:668:16: ( (lv_showMarker_4_0= 'showMarker' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:669:1: (lv_showMarker_4_0= 'showMarker' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:669:1: (lv_showMarker_4_0= 'showMarker' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:670:3: lv_showMarker_4_0= 'showMarker'
+            	    {
+            	    lv_showMarker_4_0=(Token)match(input,27,FOLLOW_27_in_ruleChartLine1564); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_showMarker_4_0, grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartLineRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "showMarker", true, "showMarker");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:690:4: ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:690:4: ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:691:5: {...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:691:106: ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:692:6: ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:695:6: ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:695:7: {...}? => ( (lv_trendLine_5_0= 'trendLine' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:695:16: ( (lv_trendLine_5_0= 'trendLine' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:696:1: (lv_trendLine_5_0= 'trendLine' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:696:1: (lv_trendLine_5_0= 'trendLine' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:697:3: lv_trendLine_5_0= 'trendLine'
+            	    {
+            	    lv_trendLine_5_0=(Token)match(input,28,FOLLOW_28_in_ruleChartLine1649); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_trendLine_5_0, grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartLineRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "trendLine", true, "trendLine");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 4 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:717:4: ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:717:4: ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:718:5: {...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:718:106: ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:719:6: ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:6: ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:7: {...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:16: ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:17: ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )?
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:17: ( (lv_cursor_6_0= 'cursor' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:723:1: (lv_cursor_6_0= 'cursor' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:723:1: (lv_cursor_6_0= 'cursor' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:724:3: lv_cursor_6_0= 'cursor'
+            	    {
+            	    lv_cursor_6_0=(Token)match(input,29,FOLLOW_29_in_ruleChartLine1735); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_cursor_6_0, grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartLineRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "cursor", true, "cursor");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:737:2: ( (lv_zoom_7_0= 'zoom' ) )?
+            	    int alt10=2;
+            	    int LA10_0 = input.LA(1);
+
+            	    if ( (LA10_0==30) ) {
+            	        alt10=1;
+            	    }
+            	    switch (alt10) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:738:1: (lv_zoom_7_0= 'zoom' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:738:1: (lv_zoom_7_0= 'zoom' )
+            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:739:3: lv_zoom_7_0= 'zoom'
+            	            {
+            	            lv_zoom_7_0=(Token)match(input,30,FOLLOW_30_in_ruleChartLine1766); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                      newLeafNode(lv_zoom_7_0, grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0());
+            	                  
+            	            }
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElement(grammarAccess.getChartLineRule());
+            	              	        }
+            	                     		setWithLastConsumed(current, "zoom", true, "zoom");
+            	              	    
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:752:3: ( (lv_tooltip_8_0= 'tooltip' ) )?
+            	    int alt11=2;
+            	    int LA11_0 = input.LA(1);
+
+            	    if ( (LA11_0==31) ) {
+            	        alt11=1;
+            	    }
+            	    switch (alt11) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:753:1: (lv_tooltip_8_0= 'tooltip' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:753:1: (lv_tooltip_8_0= 'tooltip' )
+            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:754:3: lv_tooltip_8_0= 'tooltip'
+            	            {
+            	            lv_tooltip_8_0=(Token)match(input,31,FOLLOW_31_in_ruleChartLine1798); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                      newLeafNode(lv_tooltip_8_0, grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0());
+            	                  
+            	            }
+            	            if ( state.backtracking==0 ) {
+
+            	              	        if (current==null) {
+            	              	            current = createModelElement(grammarAccess.getChartLineRule());
+            	              	        }
+            	                     		setWithLastConsumed(current, "tooltip", true, "tooltip");
+            	              	    
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 5 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:774:4: ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:774:4: ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:775:5: {...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:775:106: ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:776:6: ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:779:6: ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:779:7: {...}? => ( (lv_fillToZero_9_0= 'fillZero' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:779:16: ( (lv_fillToZero_9_0= 'fillZero' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:780:1: (lv_fillToZero_9_0= 'fillZero' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:780:1: (lv_fillToZero_9_0= 'fillZero' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:781:3: lv_fillToZero_9_0= 'fillZero'
+            	    {
+            	    lv_fillToZero_9_0=(Token)match(input,32,FOLLOW_32_in_ruleChartLine1885); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_fillToZero_9_0, grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartLineRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "fillToZero", true, "fillZero");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 6 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:801:4: ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:801:4: ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:802:5: {...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:802:106: ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:803:6: ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:806:6: ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:806:7: {...}? => ( (lv_fillArea_10_0= 'filled' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartLine", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:806:16: ( (lv_fillArea_10_0= 'filled' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:807:1: (lv_fillArea_10_0= 'filled' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:807:1: (lv_fillArea_10_0= 'filled' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:808:3: lv_fillArea_10_0= 'filled'
+            	    {
+            	    lv_fillArea_10_0=(Token)match(input,33,FOLLOW_33_in_ruleChartLine1970); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_fillArea_10_0, grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartLineRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "fillArea", true, "filled");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop12;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartLine"
+
+
+    // $ANTLR start "entryRuleChartPie"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:843:1: entryRuleChartPie returns [EObject current=null] : iv_ruleChartPie= ruleChartPie EOF ;
+    public final EObject entryRuleChartPie() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartPie = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:844:2: (iv_ruleChartPie= ruleChartPie EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:845:2: iv_ruleChartPie= ruleChartPie EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartPieRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartPie_in_entryRuleChartPie2059);
+            iv_ruleChartPie=ruleChartPie();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartPie; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartPie2069); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartPie"
+
+
+    // $ANTLR start "ruleChartPie"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:852:1: ruleChartPie returns [EObject current=null] : ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? ) ;
+    public final EObject ruleChartPie() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_empty_2_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:855:28: ( ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:1: ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:1: ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:2: () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:857:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartPieAccess().getChartPieAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleChartPie2115); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartPieAccess().getPieKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:866:1: ( (lv_empty_2_0= 'empty' ) )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==35) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:867:1: (lv_empty_2_0= 'empty' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:867:1: (lv_empty_2_0= 'empty' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:868:3: lv_empty_2_0= 'empty'
+                    {
+                    lv_empty_2_0=(Token)match(input,35,FOLLOW_35_in_ruleChartPie2133); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_empty_2_0, grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartPieRule());
+                      	        }
+                             		setWithLastConsumed(current, "empty", true, "empty");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartPie"
+
+
+    // $ANTLR start "entryRuleChartDonut"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:889:1: entryRuleChartDonut returns [EObject current=null] : iv_ruleChartDonut= ruleChartDonut EOF ;
+    public final EObject entryRuleChartDonut() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartDonut = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:890:2: (iv_ruleChartDonut= ruleChartDonut EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:891:2: iv_ruleChartDonut= ruleChartDonut EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartDonutRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartDonut_in_entryRuleChartDonut2183);
+            iv_ruleChartDonut=ruleChartDonut();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartDonut; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartDonut2193); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartDonut"
+
+
+    // $ANTLR start "ruleChartDonut"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:898:1: ruleChartDonut returns [EObject current=null] : ( () otherlv_1= 'donut' ) ;
+    public final EObject ruleChartDonut() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:901:28: ( ( () otherlv_1= 'donut' ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:1: ( () otherlv_1= 'donut' )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:1: ( () otherlv_1= 'donut' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:2: () otherlv_1= 'donut'
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:903:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartDonutAccess().getChartDonutAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleChartDonut2239); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartDonutAccess().getDonutKeyword_1());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartDonut"
+
+
+    // $ANTLR start "entryRuleChartBubble"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:920:1: entryRuleChartBubble returns [EObject current=null] : iv_ruleChartBubble= ruleChartBubble EOF ;
+    public final EObject entryRuleChartBubble() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartBubble = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:921:2: (iv_ruleChartBubble= ruleChartBubble EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:922:2: iv_ruleChartBubble= ruleChartBubble EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartBubbleRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartBubble_in_entryRuleChartBubble2275);
+            iv_ruleChartBubble=ruleChartBubble();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartBubble; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartBubble2285); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartBubble"
+
+
+    // $ANTLR start "ruleChartBubble"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:929:1: ruleChartBubble returns [EObject current=null] : ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleChartBubble() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_multiplier_3_0=null;
+        Token lv_gradient_5_0=null;
+        Token lv_transparent_6_0=null;
+        AntlrDatatypeRuleToken lv_multiplierValue_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:932:28: ( ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:1: ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:1: ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:2: () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:934:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartBubbleAccess().getChartBubbleAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleChartBubble2331); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartBubbleAccess().getBubbleKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:943:1: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( ((LA16_0>=38 && LA16_0<=40)) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:945:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:945:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:946:2: ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:949:2: ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:950:3: ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:950:3: ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+
+                    int cnt15=0;
+                    loop15:
+                    do {
+                        int alt15=3;
+                        int LA15_0 = input.LA(1);
+
+                        if ( LA15_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                            alt15=1;
+                        }
+                        else if ( LA15_0 >=39 && LA15_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                            alt15=2;
+                        }
+
+
+                        switch (alt15) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:952:4: ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:952:4: ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:953:5: {...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleChartBubble", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:953:108: ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:954:6: ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:6: ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:7: {...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleChartBubble", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:16: ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:17: ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:17: ( (lv_multiplier_3_0= 'multiplier' ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:958:1: (lv_multiplier_3_0= 'multiplier' )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:958:1: (lv_multiplier_3_0= 'multiplier' )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:959:3: lv_multiplier_3_0= 'multiplier'
+                    	    {
+                    	    lv_multiplier_3_0=(Token)match(input,38,FOLLOW_38_in_ruleChartBubble2395); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	              newLeafNode(lv_multiplier_3_0, grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0());
+                    	          
+                    	    }
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElement(grammarAccess.getChartBubbleRule());
+                    	      	        }
+                    	             		setWithLastConsumed(current, "multiplier", true, "multiplier");
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:972:2: ( (lv_multiplierValue_4_0= ruleNumber ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:973:1: (lv_multiplierValue_4_0= ruleNumber )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:973:1: (lv_multiplierValue_4_0= ruleNumber )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:974:3: lv_multiplierValue_4_0= ruleNumber
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleNumber_in_ruleChartBubble2429);
+                    	    lv_multiplierValue_4_0=ruleNumber();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getChartBubbleRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"multiplierValue",
+                    	              		lv_multiplierValue_4_0, 
+                    	              		"Number");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:997:4: ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:997:4: ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:998:5: {...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleChartBubble", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:998:108: ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:999:6: ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:6: ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) )
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:7: {...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleChartBubble", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:16: ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) )
+                    	    int alt14=2;
+                    	    int LA14_0 = input.LA(1);
+
+                    	    if ( (LA14_0==39) ) {
+                    	        alt14=1;
+                    	    }
+                    	    else if ( (LA14_0==40) ) {
+                    	        alt14=2;
+                    	    }
+                    	    else {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        NoViableAltException nvae =
+                    	            new NoViableAltException("", 14, 0, input);
+
+                    	        throw nvae;
+                    	    }
+                    	    switch (alt14) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:17: ( (lv_gradient_5_0= 'gradient' ) )
+                    	            {
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:17: ( (lv_gradient_5_0= 'gradient' ) )
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1003:1: (lv_gradient_5_0= 'gradient' )
+                    	            {
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1003:1: (lv_gradient_5_0= 'gradient' )
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1004:3: lv_gradient_5_0= 'gradient'
+                    	            {
+                    	            lv_gradient_5_0=(Token)match(input,39,FOLLOW_39_in_ruleChartBubble2503); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_gradient_5_0, grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getChartBubbleRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "gradient", true, "gradient");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+                    	        case 2 :
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1018:6: ( (lv_transparent_6_0= 'transparent' ) )
+                    	            {
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1018:6: ( (lv_transparent_6_0= 'transparent' ) )
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1019:1: (lv_transparent_6_0= 'transparent' )
+                    	            {
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1019:1: (lv_transparent_6_0= 'transparent' )
+                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1020:3: lv_transparent_6_0= 'transparent'
+                    	            {
+                    	            lv_transparent_6_0=(Token)match(input,40,FOLLOW_40_in_ruleChartBubble2540); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_transparent_6_0, grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getChartBubbleRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "transparent", true, "transparent");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt15 >= 1 ) break loop15;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(15, input);
+                                throw eee;
+                        }
+                        cnt15++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleChartBubble", "getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartBubble"
+
+
+    // $ANTLR start "entryRuleChartGauge"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1056:1: entryRuleChartGauge returns [EObject current=null] : iv_ruleChartGauge= ruleChartGauge EOF ;
+    public final EObject entryRuleChartGauge() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartGauge = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1057:2: (iv_ruleChartGauge= ruleChartGauge EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1058:2: iv_ruleChartGauge= ruleChartGauge EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartGaugeRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartGauge_in_entryRuleChartGauge2637);
+            iv_ruleChartGauge=ruleChartGauge();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartGauge; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartGauge2647); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartGauge"
+
+
+    // $ANTLR start "ruleChartGauge"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1065:1: ruleChartGauge returns [EObject current=null] : ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) ) ;
+    public final EObject ruleChartGauge() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_labeled_3_0=null;
+        Token lv_labelValue_4_0=null;
+        Token lv_hasTicks_5_0=null;
+        Token otherlv_6=null;
+        Token lv_minValue_7_0=null;
+        Token otherlv_8=null;
+        Token lv_maxValue_9_0=null;
+        Token lv_hasIntervals_10_0=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        EObject lv_intervals_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1068:28: ( ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:1: ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:1: ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:2: () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1070:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartGaugeAccess().getChartGaugeAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,41,FOLLOW_41_in_ruleChartGauge2693); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartGaugeAccess().getGaugeKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1079:1: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1081:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1081:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1082:2: ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1085:2: ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1086:3: ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )*
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1086:3: ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )*
+            loop18:
+            do {
+                int alt18=4;
+                int LA18_0 = input.LA(1);
+
+                if ( LA18_0 ==42 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                    alt18=1;
+                }
+                else if ( LA18_0 ==43 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                    alt18=2;
+                }
+                else if ( LA18_0 ==46 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                    alt18=3;
+                }
+
+
+                switch (alt18) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1088:4: ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1088:4: ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1089:5: {...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartGauge", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1089:107: ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1090:6: ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:6: ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:7: {...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartGauge", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:16: ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:17: ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:17: ( (lv_labeled_3_0= 'label' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1094:1: (lv_labeled_3_0= 'label' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1094:1: (lv_labeled_3_0= 'label' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1095:3: lv_labeled_3_0= 'label'
+            	    {
+            	    lv_labeled_3_0=(Token)match(input,42,FOLLOW_42_in_ruleChartGauge2757); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_labeled_3_0, grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "labeled", true, "label");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1108:2: ( (lv_labelValue_4_0= RULE_STRING ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1109:1: (lv_labelValue_4_0= RULE_STRING )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1109:1: (lv_labelValue_4_0= RULE_STRING )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1110:3: lv_labelValue_4_0= RULE_STRING
+            	    {
+            	    lv_labelValue_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChartGauge2787); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			newLeafNode(lv_labelValue_4_0, grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); 
+            	      		
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      	        }
+            	             		setWithLastConsumed(
+            	             			current, 
+            	             			"labelValue",
+            	              		lv_labelValue_4_0, 
+            	              		"STRING");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1133:4: ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1133:4: ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1134:5: {...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartGauge", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1134:107: ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1135:6: ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:6: ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:7: {...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartGauge", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:16: ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:17: ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:17: ( (lv_hasTicks_5_0= 'hasTicks' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1139:1: (lv_hasTicks_5_0= 'hasTicks' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1139:1: (lv_hasTicks_5_0= 'hasTicks' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1140:3: lv_hasTicks_5_0= 'hasTicks'
+            	    {
+            	    lv_hasTicks_5_0=(Token)match(input,43,FOLLOW_43_in_ruleChartGauge2866); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_hasTicks_5_0, grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "hasTicks", true, "hasTicks");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    otherlv_6=(Token)match(input,44,FOLLOW_44_in_ruleChartGauge2891); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_6, grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1157:1: ( (lv_minValue_7_0= RULE_INT ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1158:1: (lv_minValue_7_0= RULE_INT )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1158:1: (lv_minValue_7_0= RULE_INT )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1159:3: lv_minValue_7_0= RULE_INT
+            	    {
+            	    lv_minValue_7_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleChartGauge2908); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			newLeafNode(lv_minValue_7_0, grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); 
+            	      		
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      	        }
+            	             		setWithLastConsumed(
+            	             			current, 
+            	             			"minValue",
+            	              		lv_minValue_7_0, 
+            	              		"INT");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    otherlv_8=(Token)match(input,45,FOLLOW_45_in_ruleChartGauge2925); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_8, grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1179:1: ( (lv_maxValue_9_0= RULE_INT ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1180:1: (lv_maxValue_9_0= RULE_INT )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1180:1: (lv_maxValue_9_0= RULE_INT )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1181:3: lv_maxValue_9_0= RULE_INT
+            	    {
+            	    lv_maxValue_9_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleChartGauge2942); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			newLeafNode(lv_maxValue_9_0, grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); 
+            	      		
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      	        }
+            	             		setWithLastConsumed(
+            	             			current, 
+            	             			"maxValue",
+            	              		lv_maxValue_9_0, 
+            	              		"INT");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1204:4: ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1204:4: ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1205:5: {...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartGauge", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1205:107: ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1206:6: ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:6: ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:7: {...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChartGauge", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:16: ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:17: ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:17: ( (lv_hasIntervals_10_0= 'intervals' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1210:1: (lv_hasIntervals_10_0= 'intervals' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1210:1: (lv_hasIntervals_10_0= 'intervals' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1211:3: lv_hasIntervals_10_0= 'intervals'
+            	    {
+            	    lv_hasIntervals_10_0=(Token)match(input,46,FOLLOW_46_in_ruleChartGauge3021); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_hasIntervals_10_0, grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "hasIntervals", true, "intervals");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    otherlv_11=(Token)match(input,14,FOLLOW_14_in_ruleChartGauge3046); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_11, grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1228:1: ( (lv_intervals_12_0= ruleChartInterval ) )*
+            	    loop17:
+            	    do {
+            	        int alt17=2;
+            	        int LA17_0 = input.LA(1);
+
+            	        if ( (LA17_0==50) ) {
+            	            alt17=1;
+            	        }
+
+
+            	        switch (alt17) {
+            	    	case 1 :
+            	    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1229:1: (lv_intervals_12_0= ruleChartInterval )
+            	    	    {
+            	    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1229:1: (lv_intervals_12_0= ruleChartInterval )
+            	    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1230:3: lv_intervals_12_0= ruleChartInterval
+            	    	    {
+            	    	    if ( state.backtracking==0 ) {
+            	    	       
+            	    	      	        newCompositeNode(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); 
+            	    	      	    
+            	    	    }
+            	    	    pushFollow(FOLLOW_ruleChartInterval_in_ruleChartGauge3067);
+            	    	    lv_intervals_12_0=ruleChartInterval();
+
+            	    	    state._fsp--;
+            	    	    if (state.failed) return current;
+            	    	    if ( state.backtracking==0 ) {
+
+            	    	      	        if (current==null) {
+            	    	      	            current = createModelElementForParent(grammarAccess.getChartGaugeRule());
+            	    	      	        }
+            	    	             		add(
+            	    	             			current, 
+            	    	             			"intervals",
+            	    	              		lv_intervals_12_0, 
+            	    	              		"ChartInterval");
+            	    	      	        afterParserOrEnumRuleCall();
+            	    	      	    
+            	    	    }
+
+            	    	    }
+
+
+            	    	    }
+            	    	    break;
+
+            	    	default :
+            	    	    break loop17;
+            	        }
+            	    } while (true);
+
+            	    otherlv_13=(Token)match(input,15,FOLLOW_15_in_ruleChartGauge3080); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_13, grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop18;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartGauge"
+
+
+    // $ANTLR start "entryRuleChartTree"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1272:1: entryRuleChartTree returns [EObject current=null] : iv_ruleChartTree= ruleChartTree EOF ;
+    public final EObject entryRuleChartTree() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartTree = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1273:2: (iv_ruleChartTree= ruleChartTree EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1274:2: iv_ruleChartTree= ruleChartTree EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartTreeRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartTree_in_entryRuleChartTree3157);
+            iv_ruleChartTree=ruleChartTree();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartTree; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartTree3167); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartTree"
+
+
+    // $ANTLR start "ruleChartTree"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1281:1: ruleChartTree returns [EObject current=null] : ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) ) ;
+    public final EObject ruleChartTree() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_map_2_0=null;
+        Token lv_collapsible_3_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1284:28: ( ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:1: ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:1: ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:2: () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1286:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartTreeAccess().getChartTreeAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,47,FOLLOW_47_in_ruleChartTree3213); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartTreeAccess().getTreeKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1295:1: ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==48) ) {
+                alt19=1;
+            }
+            else if ( (LA19_0==49) ) {
+                alt19=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1295:2: ( (lv_map_2_0= 'map' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1295:2: ( (lv_map_2_0= 'map' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1296:1: (lv_map_2_0= 'map' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1296:1: (lv_map_2_0= 'map' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1297:3: lv_map_2_0= 'map'
+                    {
+                    lv_map_2_0=(Token)match(input,48,FOLLOW_48_in_ruleChartTree3232); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_map_2_0, grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartTreeRule());
+                      	        }
+                             		setWithLastConsumed(current, "map", true, "map");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1311:6: ( (lv_collapsible_3_0= 'collapsible' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1311:6: ( (lv_collapsible_3_0= 'collapsible' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1312:1: (lv_collapsible_3_0= 'collapsible' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1312:1: (lv_collapsible_3_0= 'collapsible' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1313:3: lv_collapsible_3_0= 'collapsible'
+                    {
+                    lv_collapsible_3_0=(Token)match(input,49,FOLLOW_49_in_ruleChartTree3269); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_collapsible_3_0, grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartTreeRule());
+                      	        }
+                             		setWithLastConsumed(current, "collapsible", true, "collapsible");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartTree"
+
+
+    // $ANTLR start "entryRuleChartInterval"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1334:1: entryRuleChartInterval returns [EObject current=null] : iv_ruleChartInterval= ruleChartInterval EOF ;
+    public final EObject entryRuleChartInterval() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartInterval = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1335:2: (iv_ruleChartInterval= ruleChartInterval EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1336:2: iv_ruleChartInterval= ruleChartInterval EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartIntervalRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartInterval_in_entryRuleChartInterval3319);
+            iv_ruleChartInterval=ruleChartInterval();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartInterval; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartInterval3329); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartInterval"
+
+
+    // $ANTLR start "ruleChartInterval"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1343:1: ruleChartInterval returns [EObject current=null] : this_ChartNumberInterval_0= ruleChartNumberInterval ;
+    public final EObject ruleChartInterval() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ChartNumberInterval_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1346:28: (this_ChartNumberInterval_0= ruleChartNumberInterval )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1348:5: this_ChartNumberInterval_0= ruleChartNumberInterval
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleChartNumberInterval_in_ruleChartInterval3375);
+            this_ChartNumberInterval_0=ruleChartNumberInterval();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_ChartNumberInterval_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartInterval"
+
+
+    // $ANTLR start "entryRuleChartNumberInterval"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1364:1: entryRuleChartNumberInterval returns [EObject current=null] : iv_ruleChartNumberInterval= ruleChartNumberInterval EOF ;
+    public final EObject entryRuleChartNumberInterval() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartNumberInterval = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1365:2: (iv_ruleChartNumberInterval= ruleChartNumberInterval EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1366:2: iv_ruleChartNumberInterval= ruleChartNumberInterval EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartNumberIntervalRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartNumberInterval_in_entryRuleChartNumberInterval3409);
+            iv_ruleChartNumberInterval=ruleChartNumberInterval();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartNumberInterval; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartNumberInterval3419); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartNumberInterval"
+
+
+    // $ANTLR start "ruleChartNumberInterval"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1373:1: ruleChartNumberInterval returns [EObject current=null] : ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) ) ;
+    public final EObject ruleChartNumberInterval() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        AntlrDatatypeRuleToken lv_numberIntervalValue_2_0 = null;
+
+        EObject lv_numberRange_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1376:28: ( ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:1: ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:1: ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:2: () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1378:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleChartNumberInterval3465); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1387:1: ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1388:1: (lv_numberIntervalValue_2_0= ruleSignedNumber )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1388:1: (lv_numberIntervalValue_2_0= ruleSignedNumber )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1389:3: lv_numberIntervalValue_2_0= ruleSignedNumber
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleSignedNumber_in_ruleChartNumberInterval3486);
+            lv_numberIntervalValue_2_0=ruleSignedNumber();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"numberIntervalValue",
+                      		lv_numberIntervalValue_2_0, 
+                      		"SignedNumber");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1405:2: ( (lv_numberRange_3_0= ruleChartRangeElement ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1406:1: (lv_numberRange_3_0= ruleChartRangeElement )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1406:1: (lv_numberRange_3_0= ruleChartRangeElement )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1407:3: lv_numberRange_3_0= ruleChartRangeElement
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleChartRangeElement_in_ruleChartNumberInterval3507);
+            lv_numberRange_3_0=ruleChartRangeElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"numberRange",
+                      		lv_numberRange_3_0, 
+                      		"ChartRangeElement");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartNumberInterval"
+
+
+    // $ANTLR start "entryRuleChartDatamart"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1431:1: entryRuleChartDatamart returns [EObject current=null] : iv_ruleChartDatamart= ruleChartDatamart EOF ;
+    public final EObject entryRuleChartDatamart() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartDatamart = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1432:2: (iv_ruleChartDatamart= ruleChartDatamart EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1433:2: iv_ruleChartDatamart= ruleChartDatamart EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartDatamartRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartDatamart_in_entryRuleChartDatamart3543);
+            iv_ruleChartDatamart=ruleChartDatamart();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartDatamart; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartDatamart3553); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartDatamart"
+
+
+    // $ANTLR start "ruleChartDatamart"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1440:1: ruleChartDatamart returns [EObject current=null] : (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' ) ;
+    public final EObject ruleChartDatamart() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject lv_elements_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1443:28: ( (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1444:1: (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1444:1: (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1444:3: otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,51,FOLLOW_51_in_ruleChartDatamart3590); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getChartDatamartAccess().getDatamartKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1448:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1449:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1449:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1450:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getChartDatamartRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChartDatamart3610); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleChartDatamart3622); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1465:1: ( (lv_elements_3_0= ruleChartElement ) )*
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( (LA20_0==31||LA20_0==52||LA20_0==57) ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1466:1: (lv_elements_3_0= ruleChartElement )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1466:1: (lv_elements_3_0= ruleChartElement )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1467:3: lv_elements_3_0= ruleChartElement
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleChartElement_in_ruleChartDatamart3643);
+            	    lv_elements_3_0=ruleChartElement();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getChartDatamartRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"elements",
+            	              		lv_elements_3_0, 
+            	              		"ChartElement");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop20;
+                }
+            } while (true);
+
+            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleChartDatamart3656); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartDatamart"
+
+
+    // $ANTLR start "entryRuleChartElement"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1495:1: entryRuleChartElement returns [EObject current=null] : iv_ruleChartElement= ruleChartElement EOF ;
+    public final EObject entryRuleChartElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartElement = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1496:2: (iv_ruleChartElement= ruleChartElement EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1497:2: iv_ruleChartElement= ruleChartElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartElement_in_entryRuleChartElement3692);
+            iv_ruleChartElement=ruleChartElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartElement; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartElement3702); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartElement"
+
+
+    // $ANTLR start "ruleChartElement"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1504:1: ruleChartElement returns [EObject current=null] : (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter ) ;
+    public final EObject ruleChartElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ChartAxis_0 = null;
+
+        EObject this_ChartLegend_1 = null;
+
+        EObject this_ChartHighlighter_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1507:28: ( (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1508:1: (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1508:1: (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter )
+            int alt21=3;
+            switch ( input.LA(1) ) {
+            case 57:
+                {
+                alt21=1;
+                }
+                break;
+            case 52:
+                {
+                alt21=2;
+                }
+                break;
+            case 31:
+                {
+                alt21=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt21) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1509:5: this_ChartAxis_0= ruleChartAxis
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartAxis_in_ruleChartElement3749);
+                    this_ChartAxis_0=ruleChartAxis();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartAxis_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1519:5: this_ChartLegend_1= ruleChartLegend
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartLegend_in_ruleChartElement3776);
+                    this_ChartLegend_1=ruleChartLegend();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartLegend_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1529:5: this_ChartHighlighter_2= ruleChartHighlighter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleChartHighlighter_in_ruleChartElement3803);
+                    this_ChartHighlighter_2=ruleChartHighlighter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ChartHighlighter_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartElement"
+
+
+    // $ANTLR start "entryRuleChartLegend"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1545:1: entryRuleChartLegend returns [EObject current=null] : iv_ruleChartLegend= ruleChartLegend EOF ;
+    public final EObject entryRuleChartLegend() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartLegend = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1546:2: (iv_ruleChartLegend= ruleChartLegend EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1547:2: iv_ruleChartLegend= ruleChartLegend EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartLegendRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartLegend_in_entryRuleChartLegend3838);
+            iv_ruleChartLegend=ruleChartLegend();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartLegend; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartLegend3848); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartLegend"
+
+
+    // $ANTLR start "ruleChartLegend"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1554:1: ruleChartLegend returns [EObject current=null] : (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? ) ;
+    public final EObject ruleChartLegend() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_toggle_2_0=null;
+        Token lv_replot_3_0=null;
+        Enumerator lv_placement_1_0 = null;
+
+        Enumerator lv_toggleType_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1557:28: ( (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1558:1: (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1558:1: (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1558:3: otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )?
+            {
+            otherlv_0=(Token)match(input,52,FOLLOW_52_in_ruleChartLegend3885); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getChartLegendAccess().getLegendKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1562:1: ( (lv_placement_1_0= ruleLegendPlacementEnum ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1563:1: (lv_placement_1_0= ruleLegendPlacementEnum )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1563:1: (lv_placement_1_0= ruleLegendPlacementEnum )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1564:3: lv_placement_1_0= ruleLegendPlacementEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLegendPlacementEnum_in_ruleChartLegend3906);
+            lv_placement_1_0=ruleLegendPlacementEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartLegendRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"placement",
+                      		lv_placement_1_0, 
+                      		"LegendPlacementEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1580:2: ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )?
+            int alt22=2;
+            int LA22_0 = input.LA(1);
+
+            if ( (LA22_0==53) ) {
+                alt22=1;
+            }
+            switch (alt22) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1580:3: ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1580:3: ( (lv_toggle_2_0= 'toggle' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1581:1: (lv_toggle_2_0= 'toggle' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1581:1: (lv_toggle_2_0= 'toggle' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1582:3: lv_toggle_2_0= 'toggle'
+                    {
+                    lv_toggle_2_0=(Token)match(input,53,FOLLOW_53_in_ruleChartLegend3925); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_toggle_2_0, grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartLegendRule());
+                      	        }
+                             		setWithLastConsumed(current, "toggle", true, "toggle");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1595:2: ( (lv_replot_3_0= 'replot' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1596:1: (lv_replot_3_0= 'replot' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1596:1: (lv_replot_3_0= 'replot' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1597:3: lv_replot_3_0= 'replot'
+                    {
+                    lv_replot_3_0=(Token)match(input,54,FOLLOW_54_in_ruleChartLegend3956); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_replot_3_0, grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartLegendRule());
+                      	        }
+                             		setWithLastConsumed(current, "replot", true, "replot");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1610:2: ( (lv_toggleType_4_0= ruleToggleTypeEnum ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1611:1: (lv_toggleType_4_0= ruleToggleTypeEnum )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1611:1: (lv_toggleType_4_0= ruleToggleTypeEnum )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1612:3: lv_toggleType_4_0= ruleToggleTypeEnum
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleToggleTypeEnum_in_ruleChartLegend3990);
+                    lv_toggleType_4_0=ruleToggleTypeEnum();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getChartLegendRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"toggleType",
+                              		lv_toggleType_4_0, 
+                              		"ToggleTypeEnum");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartLegend"
+
+
+    // $ANTLR start "entryRuleChartHighlighter"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1636:1: entryRuleChartHighlighter returns [EObject current=null] : iv_ruleChartHighlighter= ruleChartHighlighter EOF ;
+    public final EObject entryRuleChartHighlighter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartHighlighter = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1637:2: (iv_ruleChartHighlighter= ruleChartHighlighter EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1638:2: iv_ruleChartHighlighter= ruleChartHighlighter EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartHighlighterRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartHighlighter_in_entryRuleChartHighlighter4028);
+            iv_ruleChartHighlighter=ruleChartHighlighter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartHighlighter; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartHighlighter4038); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartHighlighter"
+
+
+    // $ANTLR start "ruleChartHighlighter"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1645:1: ruleChartHighlighter returns [EObject current=null] : (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) ) ;
+    public final EObject ruleChartHighlighter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_tooltipAlways_2_0=null;
+        Token lv_insideChart_3_0=null;
+        Enumerator lv_location_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1648:28: ( (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1649:1: (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1649:1: (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1649:3: otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? )
+            {
+            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleChartHighlighter4075); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1653:1: ( (lv_location_1_0= ruleTooltipLocationEnum ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1654:1: (lv_location_1_0= ruleTooltipLocationEnum )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1654:1: (lv_location_1_0= ruleTooltipLocationEnum )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1655:3: lv_location_1_0= ruleTooltipLocationEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTooltipLocationEnum_in_ruleChartHighlighter4096);
+            lv_location_1_0=ruleTooltipLocationEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartHighlighterRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"location",
+                      		lv_location_1_0, 
+                      		"TooltipLocationEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1671:2: ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1671:3: ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1671:3: ( (lv_tooltipAlways_2_0= 'always' ) )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==55) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1672:1: (lv_tooltipAlways_2_0= 'always' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1672:1: (lv_tooltipAlways_2_0= 'always' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1673:3: lv_tooltipAlways_2_0= 'always'
+                    {
+                    lv_tooltipAlways_2_0=(Token)match(input,55,FOLLOW_55_in_ruleChartHighlighter4115); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_tooltipAlways_2_0, grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartHighlighterRule());
+                      	        }
+                             		setWithLastConsumed(current, "tooltipAlways", true, "always");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1686:3: ( (lv_insideChart_3_0= 'inside' ) )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==56) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1687:1: (lv_insideChart_3_0= 'inside' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1687:1: (lv_insideChart_3_0= 'inside' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1688:3: lv_insideChart_3_0= 'inside'
+                    {
+                    lv_insideChart_3_0=(Token)match(input,56,FOLLOW_56_in_ruleChartHighlighter4147); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_insideChart_3_0, grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartHighlighterRule());
+                      	        }
+                             		setWithLastConsumed(current, "insideChart", true, "inside");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartHighlighter"
+
+
+    // $ANTLR start "entryRuleChartAxis"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1709:1: entryRuleChartAxis returns [EObject current=null] : iv_ruleChartAxis= ruleChartAxis EOF ;
+    public final EObject entryRuleChartAxis() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartAxis = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1710:2: (iv_ruleChartAxis= ruleChartAxis EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1711:2: iv_ruleChartAxis= ruleChartAxis EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartAxisRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartAxis_in_entryRuleChartAxis4198);
+            iv_ruleChartAxis=ruleChartAxis();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartAxis; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartAxis4208); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartAxis"
+
+
+    // $ANTLR start "ruleChartAxis"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1718:1: ruleChartAxis returns [EObject current=null] : (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? ) ;
+    public final EObject ruleChartAxis() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_shortLabel_4_0=null;
+        Token otherlv_5=null;
+        Enumerator lv_renderType_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_angle_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1721:28: ( (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1722:1: (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1722:1: (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1722:3: otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )?
+            {
+            otherlv_0=(Token)match(input,57,FOLLOW_57_in_ruleChartAxis4245); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getChartAxisAccess().getAxisKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1726:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1727:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1727:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1728:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getChartAxisRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChartAxis4265); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,58,FOLLOW_58_in_ruleChartAxis4277); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getChartAxisAccess().getRendersKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1743:1: ( (lv_renderType_3_0= ruleRenderTypeEnum ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1744:1: (lv_renderType_3_0= ruleRenderTypeEnum )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1744:1: (lv_renderType_3_0= ruleRenderTypeEnum )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1745:3: lv_renderType_3_0= ruleRenderTypeEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleRenderTypeEnum_in_ruleChartAxis4298);
+            lv_renderType_3_0=ruleRenderTypeEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartAxisRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"renderType",
+                      		lv_renderType_3_0, 
+                      		"RenderTypeEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1761:2: ( (lv_shortLabel_4_0= 'shortLabel' ) )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==59) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1762:1: (lv_shortLabel_4_0= 'shortLabel' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1762:1: (lv_shortLabel_4_0= 'shortLabel' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1763:3: lv_shortLabel_4_0= 'shortLabel'
+                    {
+                    lv_shortLabel_4_0=(Token)match(input,59,FOLLOW_59_in_ruleChartAxis4316); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_shortLabel_4_0, grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getChartAxisRule());
+                      	        }
+                             		setWithLastConsumed(current, "shortLabel", true, "shortLabel");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1776:3: (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )?
+            int alt26=2;
+            int LA26_0 = input.LA(1);
+
+            if ( (LA26_0==60) ) {
+                alt26=1;
+            }
+            switch (alt26) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1776:5: otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) )
+                    {
+                    otherlv_5=(Token)match(input,60,FOLLOW_60_in_ruleChartAxis4343); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getChartAxisAccess().getTickangleKeyword_5_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1780:1: ( (lv_angle_6_0= ruleSignedNumber ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1781:1: (lv_angle_6_0= ruleSignedNumber )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1781:1: (lv_angle_6_0= ruleSignedNumber )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1782:3: lv_angle_6_0= ruleSignedNumber
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleSignedNumber_in_ruleChartAxis4364);
+                    lv_angle_6_0=ruleSignedNumber();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getChartAxisRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"angle",
+                              		lv_angle_6_0, 
+                              		"SignedNumber");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartAxis"
+
+
+    // $ANTLR start "entryRuleChartRangeElement"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1806:1: entryRuleChartRangeElement returns [EObject current=null] : iv_ruleChartRangeElement= ruleChartRangeElement EOF ;
+    public final EObject entryRuleChartRangeElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartRangeElement = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1807:2: (iv_ruleChartRangeElement= ruleChartRangeElement EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1808:2: iv_ruleChartRangeElement= ruleChartRangeElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartRangeElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartRangeElement_in_entryRuleChartRangeElement4402);
+            iv_ruleChartRangeElement=ruleChartRangeElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartRangeElement; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartRangeElement4412); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartRangeElement"
+
+
+    // $ANTLR start "ruleChartRangeElement"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1815:1: ruleChartRangeElement returns [EObject current=null] : this_ChartSegmentColor_0= ruleChartSegmentColor ;
+    public final EObject ruleChartRangeElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ChartSegmentColor_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1818:28: (this_ChartSegmentColor_0= ruleChartSegmentColor )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1820:5: this_ChartSegmentColor_0= ruleChartSegmentColor
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleChartSegmentColor_in_ruleChartRangeElement4458);
+            this_ChartSegmentColor_0=ruleChartSegmentColor();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_ChartSegmentColor_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartRangeElement"
+
+
+    // $ANTLR start "entryRuleChartSegmentColor"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1836:1: entryRuleChartSegmentColor returns [EObject current=null] : iv_ruleChartSegmentColor= ruleChartSegmentColor EOF ;
+    public final EObject entryRuleChartSegmentColor() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartSegmentColor = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1837:2: (iv_ruleChartSegmentColor= ruleChartSegmentColor EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1838:2: iv_ruleChartSegmentColor= ruleChartSegmentColor EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartSegmentColorRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartSegmentColor_in_entryRuleChartSegmentColor4492);
+            iv_ruleChartSegmentColor=ruleChartSegmentColor();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartSegmentColor; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartSegmentColor4502); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartSegmentColor"
+
+
+    // $ANTLR start "ruleChartSegmentColor"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1845:1: ruleChartSegmentColor returns [EObject current=null] : (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleChartSegmentColor() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_rgb_1_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1848:28: ( (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1849:1: (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1849:1: (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1849:3: otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) )
+            {
+            otherlv_0=(Token)match(input,61,FOLLOW_61_in_ruleChartSegmentColor4539); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1853:1: ( (lv_rgb_1_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1854:1: (lv_rgb_1_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1854:1: (lv_rgb_1_0= RULE_STRING )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1855:3: lv_rgb_1_0= RULE_STRING
+            {
+            lv_rgb_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChartSegmentColor4556); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_rgb_1_0, grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getChartSegmentColorRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"rgb",
+                      		lv_rgb_1_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartSegmentColor"
+
+
+    // $ANTLR start "entryRuleChartImport"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1879:1: entryRuleChartImport returns [EObject current=null] : iv_ruleChartImport= ruleChartImport EOF ;
+    public final EObject entryRuleChartImport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleChartImport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1880:2: (iv_ruleChartImport= ruleChartImport EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1881:2: iv_ruleChartImport= ruleChartImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartImport_in_entryRuleChartImport4597);
+            iv_ruleChartImport=ruleChartImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartImport; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartImport4607); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartImport"
+
+
+    // $ANTLR start "ruleChartImport"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1888:1: ruleChartImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) ) ;
+    public final EObject ruleChartImport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1891:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1892:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1892:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1892:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) )
+            {
+            otherlv_0=(Token)match(input,62,FOLLOW_62_in_ruleChartImport4644); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getChartImportAccess().getImportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1896:1: ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1897:1: (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1897:1: (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1898:3: lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getChartImportAccess().getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleChartQualifiedNameWithWildCard_in_ruleChartImport4665);
+            lv_importedNamespace_1_0=ruleChartQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getChartImportRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"importedNamespace",
+                      		lv_importedNamespace_1_0, 
+                      		"ChartQualifiedNameWithWildCard");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartImport"
+
+
+    // $ANTLR start "entryRuleSignedNumber"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1922:1: entryRuleSignedNumber returns [String current=null] : iv_ruleSignedNumber= ruleSignedNumber EOF ;
+    public final String entryRuleSignedNumber() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleSignedNumber = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1923:2: (iv_ruleSignedNumber= ruleSignedNumber EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1924:2: iv_ruleSignedNumber= ruleSignedNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getSignedNumberRule()); 
+            }
+            pushFollow(FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber4702);
+            iv_ruleSignedNumber=ruleSignedNumber();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleSignedNumber.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleSignedNumber4713); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSignedNumber"
+
+
+    // $ANTLR start "ruleSignedNumber"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1931:1: ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT )? ;
+    public final AntlrDatatypeRuleToken ruleSignedNumber() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        Token this_INT_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1934:28: ( ( (kw= '-' )? this_INT_1= RULE_INT )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:1: ( (kw= '-' )? this_INT_1= RULE_INT )?
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:1: ( (kw= '-' )? this_INT_1= RULE_INT )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==RULE_INT||LA28_0==63) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:2: (kw= '-' )? this_INT_1= RULE_INT
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:2: (kw= '-' )?
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
+
+                    if ( (LA27_0==63) ) {
+                        alt27=1;
+                    }
+                    switch (alt27) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1936:2: kw= '-'
+                            {
+                            kw=(Token)match(input,63,FOLLOW_63_in_ruleSignedNumber4752); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleSignedNumber4769); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_INT_1);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_INT_1, grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSignedNumber"
+
+
+    // $ANTLR start "entryRuleChartQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1956:1: entryRuleChartQualifiedNameWithWildCard returns [String current=null] : iv_ruleChartQualifiedNameWithWildCard= ruleChartQualifiedNameWithWildCard EOF ;
+    public final String entryRuleChartQualifiedNameWithWildCard() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleChartQualifiedNameWithWildCard = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1957:2: (iv_ruleChartQualifiedNameWithWildCard= ruleChartQualifiedNameWithWildCard EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1958:2: iv_ruleChartQualifiedNameWithWildCard= ruleChartQualifiedNameWithWildCard EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardRule()); 
+            }
+            pushFollow(FOLLOW_ruleChartQualifiedNameWithWildCard_in_entryRuleChartQualifiedNameWithWildCard4816);
+            iv_ruleChartQualifiedNameWithWildCard=ruleChartQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleChartQualifiedNameWithWildCard.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleChartQualifiedNameWithWildCard4827); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleChartQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "ruleChartQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1965:1: ruleChartQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
+    public final AntlrDatatypeRuleToken ruleChartQualifiedNameWithWildCard() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1968:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1969:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1969:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1970:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleChartQualifiedNameWithWildCard4874);
+            this_QualifiedName_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_QualifiedName_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1980:1: (kw= '.' kw= '*' )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==64) ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1981:2: kw= '.' kw= '*'
+                    {
+                    kw=(Token)match(input,64,FOLLOW_64_in_ruleChartQualifiedNameWithWildCard4893); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+                          
+                    }
+                    kw=(Token)match(input,65,FOLLOW_65_in_ruleChartQualifiedNameWithWildCard4906); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2000:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTRANSLATABLESTRING = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2001:2: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2002:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING4949);
+            iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTRANSLATABLESTRING.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING4960); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "ruleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2009:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    public final AntlrDatatypeRuleToken ruleTRANSLATABLESTRING() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2012:28: (this_STRING_0= RULE_STRING )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2013:5: this_STRING_0= RULE_STRING
+            {
+            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING4999); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_STRING_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2028:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    public final String entryRuleTRANSLATABLEID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTRANSLATABLEID = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2029:2: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2030:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID5044);
+            iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTRANSLATABLEID.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID5055); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLEID"
+
+
+    // $ANTLR start "ruleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2037:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_ID_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2040:28: (this_ID_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2041:5: this_ID_0= RULE_ID
+            {
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID5094); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTRANSLATABLEID"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2056: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2057:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2058:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation5138);
+            iv_ruleXAnnotation=ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation5148); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2065: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2068: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069:2: ()
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2070:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,66,FOLLOW_66_in_ruleXAnnotation5194); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2079:1: ( ( ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2080:1: ( ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2080:1: ( ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2081: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_ruleXAnnotation5217);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094: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 alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==67) && (synpred1_InternalChartDSL())) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094:3: ( ( '(' )=>otherlv_3= '(' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094:4: ( '(' )=>otherlv_3= '('
+                    {
+                    otherlv_3=(Token)match(input,67,FOLLOW_67_in_ruleXAnnotation5238); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt31=3;
+                    alt31 = dfa31.predict(input);
+                    switch (alt31) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2105:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2106:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation5282);
+                            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2122:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop30:
+                            do {
+                                int alt30=2;
+                                int LA30_0 = input.LA(1);
+
+                                if ( (LA30_0==68) ) {
+                                    alt30=1;
+                                }
+
+
+                                switch (alt30) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2122:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    {
+                            	    otherlv_5=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotation5295); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2126:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2126:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2132:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2133:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation5336);
+                            	    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 loop30;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2150:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2150:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2151:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2151:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2152:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation5366);
+                            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,69,FOLLOW_69_in_ruleXAnnotation5380); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2180: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2181:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2182:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair5418);
+            iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValuePair; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair5428); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2189: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2192:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2198:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2198:6: ( ( ruleValidID ) ) otherlv_1= '='
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2198:6: ( ( ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2199:1: ( ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2199:1: ( ruleValidID )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2200: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_ruleXAnnotationElementValuePair5498);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,70,FOLLOW_70_in_ruleXAnnotationElementValuePair5510); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+                  
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2217:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2218:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2218:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2219:3: lv_value_2_0= ruleXAnnotationElementValue
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair5533);
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2243: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2244:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2245:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList5569);
+            iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValueOrCommaList; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList5579); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2252: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2255: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256: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 alt37=2;
+            alt37 = dfa37.predict(input);
+            switch (alt37) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2259:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2259:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2259:6: ()
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2260:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,71,FOLLOW_71_in_ruleXAnnotationElementValueOrCommaList5644); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+                          
+                    }
+                    otherlv_2=(Token)match(input,72,FOLLOW_72_in_ruleXAnnotationElementValueOrCommaList5656); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2273:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt34=2;
+                    int LA34_0 = input.LA(1);
+
+                    if ( ((LA34_0>=RULE_INT && LA34_0<=RULE_DECIMAL)||LA34_0==14||(LA34_0>=62 && LA34_0<=63)||(LA34_0>=66 && LA34_0<=67)||(LA34_0>=71 && LA34_0<=72)||LA34_0==79||LA34_0==95||LA34_0==99||LA34_0==106||LA34_0==108||(LA34_0>=112 && LA34_0<=114)||(LA34_0>=117 && LA34_0<=128)||LA34_0==130) ) {
+                        alt34=1;
+                    }
+                    switch (alt34) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2273:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2273:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2274:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2274:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2275:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5680);
+                            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2291:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop33:
+                            do {
+                                int alt33=2;
+                                int LA33_0 = input.LA(1);
+
+                                if ( (LA33_0==68) ) {
+                                    alt33=1;
+                                }
+
+
+                                switch (alt33) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2291:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotationElementValueOrCommaList5693); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2295:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2296:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2296:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2297:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5714);
+                            	    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 loop33;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,73,FOLLOW_73_in_ruleXAnnotationElementValueOrCommaList5730); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2318:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2318:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2319: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_ruleXAnnotationElementValueOrCommaList5760);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotationOrExpression_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2327:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt36=2;
+                    int LA36_0 = input.LA(1);
+
+                    if ( (LA36_0==68) ) {
+                        alt36=1;
+                    }
+                    switch (alt36) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2327:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2327:2: ()
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2328:5: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                                      current = forceCreateModelElementAndAdd(
+                                          grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                                          current);
+                                  
+                            }
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2333:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt35=0;
+                            loop35:
+                            do {
+                                int alt35=2;
+                                int LA35_0 = input.LA(1);
+
+                                if ( (LA35_0==68) ) {
+                                    alt35=1;
+                                }
+
+
+                                switch (alt35) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2333:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotationElementValueOrCommaList5782); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2337:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2338:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2338:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2339:3: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5803);
+                            	    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 ( cnt35 >= 1 ) break loop35;
+                            	    if (state.backtracking>0) {state.failed=true; return current;}
+                                        EarlyExitException eee =
+                                            new EarlyExitException(35, input);
+                                        throw eee;
+                                }
+                                cnt35++;
+                            } 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2363: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2364:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2365:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue5844);
+            iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValue; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue5854); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2372: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2375: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt40=2;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2379:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2379:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2379:6: ()
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2380:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,71,FOLLOW_71_in_ruleXAnnotationElementValue5919); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+                          
+                    }
+                    otherlv_2=(Token)match(input,72,FOLLOW_72_in_ruleXAnnotationElementValue5931); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2393:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt39=2;
+                    int LA39_0 = input.LA(1);
+
+                    if ( ((LA39_0>=RULE_INT && LA39_0<=RULE_DECIMAL)||LA39_0==14||(LA39_0>=62 && LA39_0<=63)||(LA39_0>=66 && LA39_0<=67)||(LA39_0>=71 && LA39_0<=72)||LA39_0==79||LA39_0==95||LA39_0==99||LA39_0==106||LA39_0==108||(LA39_0>=112 && LA39_0<=114)||(LA39_0>=117 && LA39_0<=128)||LA39_0==130) ) {
+                        alt39=1;
+                    }
+                    switch (alt39) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2393:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2393:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2394:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2394:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2395:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue5955);
+                            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2411:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop38:
+                            do {
+                                int alt38=2;
+                                int LA38_0 = input.LA(1);
+
+                                if ( (LA38_0==68) ) {
+                                    alt38=1;
+                                }
+
+
+                                switch (alt38) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2411:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotationElementValue5968); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2415:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2416:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2416:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2417:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue5989);
+                            	    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 loop38;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,73,FOLLOW_73_in_ruleXAnnotationElementValue6005); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2439:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue6034);
+                    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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2455: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2456:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2457:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression6069);
+            iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationOrExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression6079); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2464: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2467:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2468:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2468:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==66) ) {
+                alt41=1;
+            }
+            else if ( ((LA41_0>=RULE_INT && LA41_0<=RULE_DECIMAL)||LA41_0==14||(LA41_0>=62 && LA41_0<=63)||LA41_0==67||(LA41_0>=71 && LA41_0<=72)||LA41_0==79||LA41_0==95||LA41_0==99||LA41_0==106||LA41_0==108||(LA41_0>=112 && LA41_0<=114)||(LA41_0>=117 && LA41_0<=128)||LA41_0==130) ) {
+                alt41=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+            switch (alt41) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2469:5: this_XAnnotation_0= ruleXAnnotation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression6126);
+                    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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2479:5: this_XExpression_1= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression6153);
+                    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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2495: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2496:2: (iv_ruleXExpression= ruleXExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2497:2: iv_ruleXExpression= ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression6188);
+            iv_ruleXExpression=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression6198); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2504: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2507:28: (this_XAssignment_0= ruleXAssignment )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2509:5: this_XAssignment_0= ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression6244);
+            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2525: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2526:2: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2527:2: iv_ruleXAssignment= ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment6278);
+            iv_ruleXAssignment=ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAssignment; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment6288); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2534: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2537:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt43=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA43_1 = input.LA(2);
+
+                if ( (LA43_1==EOF||(LA43_1>=RULE_INT && LA43_1<=RULE_DECIMAL)||(LA43_1>=14 && LA43_1<=15)||LA43_1==18||(LA43_1>=62 && LA43_1<=65)||(LA43_1>=67 && LA43_1<=69)||(LA43_1>=71 && LA43_1<=103)||(LA43_1>=105 && LA43_1<=131)) ) {
+                    alt43=2;
+                }
+                else if ( (LA43_1==70) ) {
+                    alt43=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 43, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 117:
+                {
+                int LA43_2 = input.LA(2);
+
+                if ( (LA43_2==70) ) {
+                    alt43=1;
+                }
+                else if ( (LA43_2==EOF||(LA43_2>=RULE_INT && LA43_2<=RULE_DECIMAL)||(LA43_2>=14 && LA43_2<=15)||LA43_2==18||(LA43_2>=62 && LA43_2<=65)||(LA43_2>=67 && LA43_2<=69)||(LA43_2>=71 && LA43_2<=103)||(LA43_2>=105 && LA43_2<=131)) ) {
+                    alt43=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 43, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 118:
+                {
+                int LA43_3 = input.LA(2);
+
+                if ( (LA43_3==70) ) {
+                    alt43=1;
+                }
+                else if ( (LA43_3==EOF||(LA43_3>=RULE_INT && LA43_3<=RULE_DECIMAL)||(LA43_3>=14 && LA43_3<=15)||LA43_3==18||(LA43_3>=62 && LA43_3<=65)||(LA43_3>=67 && LA43_3<=69)||(LA43_3>=71 && LA43_3<=103)||(LA43_3>=105 && LA43_3<=131)) ) {
+                    alt43=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 43, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 62:
+                {
+                int LA43_4 = input.LA(2);
+
+                if ( (LA43_4==70) ) {
+                    alt43=1;
+                }
+                else if ( (LA43_4==EOF||(LA43_4>=RULE_INT && LA43_4<=RULE_DECIMAL)||(LA43_4>=14 && LA43_4<=15)||LA43_4==18||(LA43_4>=62 && LA43_4<=65)||(LA43_4>=67 && LA43_4<=69)||(LA43_4>=71 && LA43_4<=103)||(LA43_4>=105 && LA43_4<=131)) ) {
+                    alt43=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 43, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 119:
+                {
+                int LA43_5 = input.LA(2);
+
+                if ( (LA43_5==EOF||(LA43_5>=RULE_INT && LA43_5<=RULE_DECIMAL)||(LA43_5>=14 && LA43_5<=15)||LA43_5==18||(LA43_5>=62 && LA43_5<=65)||(LA43_5>=67 && LA43_5<=69)||(LA43_5>=71 && LA43_5<=103)||(LA43_5>=105 && LA43_5<=131)) ) {
+                    alt43=2;
+                }
+                else if ( (LA43_5==70) ) {
+                    alt43=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 43, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_INT:
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_DECIMAL:
+            case 14:
+            case 63:
+            case 67:
+            case 71:
+            case 72:
+            case 79:
+            case 95:
+            case 99:
+            case 106:
+            case 108:
+            case 112:
+            case 113:
+            case 114:
+            case 120:
+            case 121:
+            case 122:
+            case 123:
+            case 124:
+            case 125:
+            case 126:
+            case 127:
+            case 128:
+            case 130:
+                {
+                alt43=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt43) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:3: ()
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2539:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2544:2: ( ( ruleFeatureCallID ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2545:1: ( ruleFeatureCallID )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2545:1: ( ruleFeatureCallID )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2546: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_ruleXAssignment6346);
+                    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_ruleXAssignment6362);
+                    ruleOpSingleAssign();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2567:1: ( (lv_value_3_0= ruleXAssignment ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2568:1: (lv_value_3_0= ruleXAssignment )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2568:1: (lv_value_3_0= ruleXAssignment )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2569:3: lv_value_3_0= ruleXAssignment
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment6382);
+                    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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2586:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2586:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2587: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_ruleXAssignment6412);
+                    this_XOrExpression_4=ruleXOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XOrExpression_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt42=2;
+                    alt42 = dfa42.predict(input);
+                    switch (alt42) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2600:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2600:7: () ( ( ruleOpMultiAssign ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2600:7: ()
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2601:5: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                                      current = forceCreateModelElementAndSet(
+                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+                                          current);
+                                  
+                            }
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2606:2: ( ( ruleOpMultiAssign ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2607:1: ( ruleOpMultiAssign )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2607:1: ( ruleOpMultiAssign )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2608: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_ruleXAssignment6465);
+                            ruleOpMultiAssign();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2621:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2622:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2622:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2623:3: lv_rightOperand_7_0= ruleXAssignment
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment6488);
+                            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2647: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2648:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2649:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign6528);
+            iv_ruleOpSingleAssign=ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpSingleAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign6539); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2656: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2659:28: (kw= '=' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2661:2: kw= '='
+            {
+            kw=(Token)match(input,70,FOLLOW_70_in_ruleOpSingleAssign6576); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2674: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2675:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2676:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign6616);
+            iv_ruleOpMultiAssign=ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMultiAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign6627); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2683: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2686:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2687:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2687:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt45=7;
+            switch ( input.LA(1) ) {
+            case 74:
+                {
+                alt45=1;
+                }
+                break;
+            case 75:
+                {
+                alt45=2;
+                }
+                break;
+            case 76:
+                {
+                alt45=3;
+                }
+                break;
+            case 77:
+                {
+                alt45=4;
+                }
+                break;
+            case 78:
+                {
+                alt45=5;
+                }
+                break;
+            case 79:
+                {
+                alt45=6;
+                }
+                break;
+            case 80:
+                {
+                alt45=7;
+                }
+                break;
+            default:
+                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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2688:2: kw= '+='
+                    {
+                    kw=(Token)match(input,74,FOLLOW_74_in_ruleOpMultiAssign6665); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2695:2: kw= '-='
+                    {
+                    kw=(Token)match(input,75,FOLLOW_75_in_ruleOpMultiAssign6684); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2702:2: kw= '*='
+                    {
+                    kw=(Token)match(input,76,FOLLOW_76_in_ruleOpMultiAssign6703); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2709:2: kw= '/='
+                    {
+                    kw=(Token)match(input,77,FOLLOW_77_in_ruleOpMultiAssign6722); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2716:2: kw= '%='
+                    {
+                    kw=(Token)match(input,78,FOLLOW_78_in_ruleOpMultiAssign6741); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2722:6: (kw= '<' kw= '<' kw= '=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2722:6: (kw= '<' kw= '<' kw= '=' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2723:2: kw= '<' kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpMultiAssign6761); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+                          
+                    }
+                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpMultiAssign6774); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+                          
+                    }
+                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpMultiAssign6787); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2741:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2741:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2742:2: kw= '>' (kw= '>' )? kw= '>='
+                    {
+                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpMultiAssign6808); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2747:1: (kw= '>' )?
+                    int alt44=2;
+                    int LA44_0 = input.LA(1);
+
+                    if ( (LA44_0==80) ) {
+                        alt44=1;
+                    }
+                    switch (alt44) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2748:2: kw= '>'
+                            {
+                            kw=(Token)match(input,80,FOLLOW_80_in_ruleOpMultiAssign6822); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    kw=(Token)match(input,81,FOLLOW_81_in_ruleOpMultiAssign6837); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2767: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2768:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2769:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression6878);
+            iv_ruleXOrExpression=ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOrExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression6888); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2776: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2779:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2780:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2780:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2781: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_ruleXOrExpression6935);
+            this_XAndExpression_0=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAndExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop46:
+            do {
+                int alt46=2;
+                int LA46_0 = input.LA(1);
+
+                if ( (LA46_0==82) ) {
+                    int LA46_2 = input.LA(2);
+
+                    if ( (synpred8_InternalChartDSL()) ) {
+                        alt46=1;
+                    }
+
+
+                }
+
+
+                switch (alt46) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2794:6: ( () ( ( ruleOpOr ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2794:7: () ( ( ruleOpOr ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2794:7: ()
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2795:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2800:2: ( ( ruleOpOr ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2801:1: ( ruleOpOr )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2801:1: ( ruleOpOr )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2802: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_ruleXOrExpression6988);
+            	    ruleOpOr();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2815:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2816:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2816:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2817:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression7011);
+            	    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 loop46;
+                }
+            } 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2841: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2842:2: (iv_ruleOpOr= ruleOpOr EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2843:2: iv_ruleOpOr= ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr7050);
+            iv_ruleOpOr=ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOr.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr7061); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2850: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2853:28: (kw= '||' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2855:2: kw= '||'
+            {
+            kw=(Token)match(input,82,FOLLOW_82_in_ruleOpOr7098); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2868: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2869:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2870:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression7137);
+            iv_ruleXAndExpression=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAndExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression7147); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2877: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2880:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2881:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2881:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2882: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_ruleXAndExpression7194);
+            this_XEqualityExpression_0=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XEqualityExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop47:
+            do {
+                int alt47=2;
+                int LA47_0 = input.LA(1);
+
+                if ( (LA47_0==83) ) {
+                    int LA47_2 = input.LA(2);
+
+                    if ( (synpred9_InternalChartDSL()) ) {
+                        alt47=1;
+                    }
+
+
+                }
+
+
+                switch (alt47) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2895:6: ( () ( ( ruleOpAnd ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2895:7: () ( ( ruleOpAnd ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2895:7: ()
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2896:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2901:2: ( ( ruleOpAnd ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2902:1: ( ruleOpAnd )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2902:1: ( ruleOpAnd )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2903: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_ruleXAndExpression7247);
+            	    ruleOpAnd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2916:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2917:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2917:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2918:3: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression7270);
+            	    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 loop47;
+                }
+            } 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2942: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2943:2: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2944:2: iv_ruleOpAnd= ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd7309);
+            iv_ruleOpAnd=ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAnd.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd7320); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2951: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2954:28: (kw= '&&' )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2956:2: kw= '&&'
+            {
+            kw=(Token)match(input,83,FOLLOW_83_in_ruleOpAnd7357); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2969: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2970:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2971:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression7396);
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXEqualityExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression7406); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2978: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2981:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2982:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2982:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2983: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_ruleXEqualityExpression7453);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XRelationalExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop48:
+            do {
+                int alt48=2;
+                switch ( input.LA(1) ) {
+                case 84:
+                    {
+                    int LA48_2 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt48=1;
+                    }
+
+
+                    }
+                    break;
+                case 85:
+                    {
+                    int LA48_3 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt48=1;
+                    }
+
+
+                    }
+                    break;
+                case 86:
+                    {
+                    int LA48_4 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt48=1;
+                    }
+
+
+                    }
+                    break;
+                case 87:
+                    {
+                    int LA48_5 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt48=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt48) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2996:6: ( () ( ( ruleOpEquality ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2996:7: () ( ( ruleOpEquality ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2996:7: ()
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2997:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3002:2: ( ( ruleOpEquality ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3003:1: ( ruleOpEquality )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3003:1: ( ruleOpEquality )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3004: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_ruleXEqualityExpression7506);
+            	    ruleOpEquality();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3017:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3018:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3018:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3019:3: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression7529);
+            	    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 loop48;
+                }
+            } 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3043: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3044:2: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3045:2: iv_ruleOpEquality= ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality7568);
+            iv_ruleOpEquality=ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpEquality.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality7579); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3052: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3055:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3056:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3056:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt49=4;
+            switch ( input.LA(1) ) {
+            case 84:
+                {
+                alt49=1;
+                }
+                break;
+            case 85:
+                {
+                alt49=2;
+                }
+                break;
+            case 86:
+                {
+                alt49=3;
+                }
+                break;
+            case 87:
+                {
+                alt49=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 49, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt49) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3057:2: kw= '=='
+                    {
+                    kw=(Token)match(input,84,FOLLOW_84_in_ruleOpEquality7617); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3064:2: kw= '!='
+                    {
+                    kw=(Token)match(input,85,FOLLOW_85_in_ruleOpEquality7636); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3071:2: kw= '==='
+                    {
+                    kw=(Token)match(input,86,FOLLOW_86_in_ruleOpEquality7655); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3078:2: kw= '!=='
+                    {
+                    kw=(Token)match(input,87,FOLLOW_87_in_ruleOpEquality7674); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3091: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3092:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3093:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression7714);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXRelationalExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression7724); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3100: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3103: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3104: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3104: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3105: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_ruleXRelationalExpression7771);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XOtherOperatorExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop50:
+            do {
+                int alt50=3;
+                switch ( input.LA(1) ) {
+                case 79:
+                    {
+                    int LA50_2 = input.LA(2);
+
+                    if ( (synpred12_InternalChartDSL()) ) {
+                        alt50=2;
+                    }
+
+
+                    }
+                    break;
+                case 80:
+                    {
+                    int LA50_3 = input.LA(2);
+
+                    if ( (synpred12_InternalChartDSL()) ) {
+                        alt50=2;
+                    }
+
+
+                    }
+                    break;
+                case 88:
+                    {
+                    int LA50_4 = input.LA(2);
+
+                    if ( (synpred11_InternalChartDSL()) ) {
+                        alt50=1;
+                    }
+
+
+                    }
+                    break;
+                case 81:
+                    {
+                    int LA50_5 = input.LA(2);
+
+                    if ( (synpred12_InternalChartDSL()) ) {
+                        alt50=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt50) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3115:5: ( () otherlv_2= 'instanceof' )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3115:6: () otherlv_2= 'instanceof'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3115:6: ()
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3116:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,88,FOLLOW_88_in_ruleXRelationalExpression7807); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3125:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3126:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3126:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3127:3: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression7830);
+            	    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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3149:6: ( () ( ( ruleOpCompare ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3149:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3149:7: ()
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3150:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3155:2: ( ( ruleOpCompare ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3156:1: ( ruleOpCompare )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3156:1: ( ruleOpCompare )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3157: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_ruleXRelationalExpression7891);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3170:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3171:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3171:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3172:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression7914);
+            	    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 loop50;
+                }
+            } 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3196: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3197:2: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3198:2: iv_ruleOpCompare= ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare7954);
+            iv_ruleOpCompare=ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpCompare.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare7965); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3205: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3208:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3209:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3209:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt51=4;
+            switch ( input.LA(1) ) {
+            case 81:
+                {
+                alt51=1;
+                }
+                break;
+            case 79:
+                {
+                int LA51_2 = input.LA(2);
+
+                if ( (LA51_2==EOF||(LA51_2>=RULE_INT && LA51_2<=RULE_DECIMAL)||LA51_2==14||(LA51_2>=62 && LA51_2<=63)||LA51_2==67||(LA51_2>=71 && LA51_2<=72)||LA51_2==79||LA51_2==95||LA51_2==99||LA51_2==106||LA51_2==108||(LA51_2>=112 && LA51_2<=114)||(LA51_2>=117 && LA51_2<=128)||LA51_2==130) ) {
+                    alt51=4;
+                }
+                else if ( (LA51_2==70) ) {
+                    alt51=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 51, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 80:
+                {
+                alt51=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 51, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt51) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3210:2: kw= '>='
+                    {
+                    kw=(Token)match(input,81,FOLLOW_81_in_ruleOpCompare8003); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3216:6: (kw= '<' kw= '=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3216:6: (kw= '<' kw= '=' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3217:2: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpCompare8023); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+                          
+                    }
+                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpCompare8036); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3230:2: kw= '>'
+                    {
+                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpCompare8056); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3237:2: kw= '<'
+                    {
+                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpCompare8075); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3250: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3251:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3252:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression8115);
+            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOtherOperatorExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression8125); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3259: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3262:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3263:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3263:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3264: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_ruleXOtherOperatorExpression8172);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAdditiveExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop52:
+            do {
+                int alt52=2;
+                alt52 = dfa52.predict(input);
+                switch (alt52) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3277:6: ( () ( ( ruleOpOther ) ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3277:7: () ( ( ruleOpOther ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3277:7: ()
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3278:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3283:2: ( ( ruleOpOther ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3284:1: ( ruleOpOther )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3284:1: ( ruleOpOther )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3285: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_ruleXOtherOperatorExpression8225);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3298:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3299:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3299:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3300:3: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression8248);
+            	    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 loop52;
+                }
+            } 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3324: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3325:2: (iv_ruleOpOther= ruleOpOther EOF )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3326:2: iv_ruleOpOther= ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther8287);
+            iv_ruleOpOther=ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOther.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther8298); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3333: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3336:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3337:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            {
+            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3337:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt55=9;
+            alt55 = dfa55.predict(input);
+            switch (alt55) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3338:2: kw= '->'
+                    {
+                    kw=(Token)match(input,89,FOLLOW_89_in_ruleOpOther8336); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3345:2: kw= '..<'
+                    {
+                    kw=(Token)match(input,90,FOLLOW_90_in_ruleOpOther8355); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3351:6: (kw= '>' kw= '..' )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3351:6: (kw= '>' kw= '..' )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3352:2: kw= '>' kw= '..'
+                    {
+                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8375); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+                          
+                    }
+                    kw=(Token)match(input,91,FOLLOW_91_in_ruleOpOther8388); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3365:2: kw= '..'
+                    {
+                    kw=(Token)match(input,91,FOLLOW_91_in_ruleOpOther8408); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3372:2: kw= '=>'
+                    {
+                    kw=(Token)match(input,92,FOLLOW_92_in_ruleOpOther8427); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3378:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3378:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3379:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    {
+                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8447); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt53=2;
+                    int LA53_0 = input.LA(1);
+
+                    if ( (LA53_0==80) ) {
+                        int LA53_1 = input.LA(2);
+
+                        if ( (LA53_1==EOF||(LA53_1>=RULE_INT && LA53_1<=RULE_DECIMAL)||LA53_1==14||(LA53_1>=62 && LA53_1<=63)||LA53_1==67||(LA53_1>=71 && LA53_1<=72)||LA53_1==79||LA53_1==95||LA53_1==99||LA53_1==106||LA53_1==108||(LA53_1>=112 && LA53_1<=114)||(LA53_1>=117 && LA53_1<=128)||LA53_1==130) ) {
+                            alt53=2;
+                        }
+                        else if ( (LA53_1==80) && (synpred14_InternalChartDSL())) {
+                            alt53=1;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return current;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 53, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 53, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt53) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3388:5: (kw= '>' kw= '>' )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3389:2: kw= '>' kw= '>'
+                            {
+                            kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8478); 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,80,FOLLOW_80_in_ruleOpOther8491); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3402:2: kw= '>'
+                            {
+                            kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8512); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3408:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3408:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3409:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    {
+                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpOther8534); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt54=3;
+                    int LA54_0 = input.LA(1);
+
+                    if ( (LA54_0==79) ) {
+                        int LA54_1 = input.LA(2);
+
+                        if ( (synpred15_InternalChartDSL()) ) {
+                            alt54=1;
+                        }
+                        else if ( (true) ) {
+                            alt54=2;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return current;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 54, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else if ( (LA54_0==92) ) {
+                        alt54=3;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 54, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt54) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            {
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3418:5: (kw= '<' kw= '<' )
+                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3419:2: kw= '<' kw= '<'
+                            {
+                            kw=(Token)match(input,79,FOLLOW_79_in_ruleOpOther8565); 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,79,FOLLOW_79_in_ruleOpOther8578); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3432:2: kw= '<'
+                            {
+                            kw=(Token)match(input,79,FOLLOW_79_in_ruleOpOther8599); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3439:2: kw= '=>'
+                            {
+                            kw=(Token)match(input,92,FOLLOW_92_in_ruleOpOther8618); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3446:2: kw= '<>'
+                    {
+                    kw=(Token)match(input,93,FOLLOW_93_in_ruleOpOther8639); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3453:2: kw= '?:'
+                    {
+                    kw=(Token)match(input,94,FOLLOW_94_in_ruleOpOther8658); 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;
+    }
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java
new file mode 100644
index 0000000..a3979c1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java
@@ -0,0 +1,1657 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartAxis;
+import org.eclipse.osbp.xtext.chart.ChartBar;
+import org.eclipse.osbp.xtext.chart.ChartBubble;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.chart.ChartDonut;
+import org.eclipse.osbp.xtext.chart.ChartGauge;
+import org.eclipse.osbp.xtext.chart.ChartHighlighter;
+import org.eclipse.osbp.xtext.chart.ChartLegend;
+import org.eclipse.osbp.xtext.chart.ChartLine;
+import org.eclipse.osbp.xtext.chart.ChartModel;
+import org.eclipse.osbp.xtext.chart.ChartNumberInterval;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.chart.ChartPie;
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+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 ChartDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+
+	@Inject
+	private ChartDSLGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == ChartDSLPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case ChartDSLPackage.CHART:
+				if(context == grammarAccess.getChartRule()) {
+					sequence_Chart(context, (Chart) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_AXIS:
+				if(context == grammarAccess.getChartAxisRule() ||
+				   context == grammarAccess.getChartElementRule()) {
+					sequence_ChartAxis(context, (ChartAxis) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_BAR:
+				if(context == grammarAccess.getChartBarRule() ||
+				   context == grammarAccess.getChartOptionRule()) {
+					sequence_ChartBar(context, (ChartBar) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_BUBBLE:
+				if(context == grammarAccess.getChartBubbleRule() ||
+				   context == grammarAccess.getChartOptionRule()) {
+					sequence_ChartBubble(context, (ChartBubble) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_DATAMART:
+				if(context == grammarAccess.getChartDatamartRule()) {
+					sequence_ChartDatamart(context, (ChartDatamart) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_DONUT:
+				if(context == grammarAccess.getChartDonutRule() ||
+				   context == grammarAccess.getChartOptionRule()) {
+					sequence_ChartDonut(context, (ChartDonut) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_GAUGE:
+				if(context == grammarAccess.getChartGaugeRule() ||
+				   context == grammarAccess.getChartOptionRule()) {
+					sequence_ChartGauge(context, (ChartGauge) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_HIGHLIGHTER:
+				if(context == grammarAccess.getChartElementRule() ||
+				   context == grammarAccess.getChartHighlighterRule()) {
+					sequence_ChartHighlighter(context, (ChartHighlighter) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_LEGEND:
+				if(context == grammarAccess.getChartElementRule() ||
+				   context == grammarAccess.getChartLegendRule()) {
+					sequence_ChartLegend(context, (ChartLegend) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_LINE:
+				if(context == grammarAccess.getChartLineRule() ||
+				   context == grammarAccess.getChartOptionRule()) {
+					sequence_ChartLine(context, (ChartLine) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_MODEL:
+				if(context == grammarAccess.getChartModelRule()) {
+					sequence_ChartModel(context, (ChartModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_NUMBER_INTERVAL:
+				if(context == grammarAccess.getChartIntervalRule() ||
+				   context == grammarAccess.getChartNumberIntervalRule()) {
+					sequence_ChartNumberInterval(context, (ChartNumberInterval) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_PACKAGE:
+				if(context == grammarAccess.getChartPackageRule()) {
+					sequence_ChartPackage(context, (ChartPackage) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_PIE:
+				if(context == grammarAccess.getChartOptionRule() ||
+				   context == grammarAccess.getChartPieRule()) {
+					sequence_ChartPie(context, (ChartPie) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_SEGMENT_COLOR:
+				if(context == grammarAccess.getChartRangeElementRule() ||
+				   context == grammarAccess.getChartSegmentColorRule()) {
+					sequence_ChartSegmentColor(context, (ChartSegmentColor) semanticObject); 
+					return; 
+				}
+				else break;
+			case ChartDSLPackage.CHART_TREE:
+				if(context == grammarAccess.getChartOptionRule() ||
+				   context == grammarAccess.getChartTreeRule()) {
+					sequence_ChartTree(context, (ChartTree) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getChartImportRule()) {
+					sequence_ChartImport(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == TypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case TypesPackage.JVM_FORMAL_PARAMETER:
+				if(context == grammarAccess.getFullJvmFormalParameterRule()) {
+					sequence_FullJvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmFormalParameterRule()) {
+					sequence_JvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_GENERIC_ARRAY_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmTypeReference(context, (JvmGenericArrayTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_INNER_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmParameterizedTypeReference(context, (JvmInnerTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_LOWER_BOUND:
+				if(context == grammarAccess.getJvmLowerBoundAndedRule()) {
+					sequence_JvmLowerBoundAnded(context, (JvmLowerBound) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmLowerBoundRule()) {
+					sequence_JvmLowerBound(context, (JvmLowerBound) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_PARAMETERIZED_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmParameterizedTypeReference(context, (JvmParameterizedTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_TYPE_PARAMETER:
+				if(context == grammarAccess.getJvmTypeParameterRule()) {
+					sequence_JvmTypeParameter(context, (JvmTypeParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_UPPER_BOUND:
+				if(context == grammarAccess.getJvmUpperBoundAndedRule()) {
+					sequence_JvmUpperBoundAnded(context, (JvmUpperBound) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmUpperBoundRule()) {
+					sequence_JvmUpperBound(context, (JvmUpperBound) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_WILDCARD_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmWildcardTypeReferenceRule()) {
+					sequence_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XAnnotationsPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XAnnotationsPackage.XANNOTATION:
+				if(context == grammarAccess.getXAnnotationRule() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule()) {
+					sequence_XAnnotation(context, (XAnnotation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XAnnotationsPackage.XANNOTATION_ELEMENT_VALUE_PAIR:
+				if(context == grammarAccess.getXAnnotationElementValuePairRule()) {
+					sequence_XAnnotationElementValuePair(context, (XAnnotationElementValuePair) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XbasePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XbasePackage.XASSIGNMENT:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XAssignment_XMemberFeatureCall(context, (XAssignment) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBASIC_FOR_LOOP_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBasicForLoopExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBasicForLoopExpression(context, (XBasicForLoopExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBINARY_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XAdditiveExpression_XAndExpression_XAssignment_XEqualityExpression_XMultiplicativeExpression_XOrExpression_XOtherOperatorExpression_XRelationalExpression(context, (XBinaryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBLOCK_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBlockExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBlockExpression(context, (XBlockExpression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXExpressionInClosureRule()) {
+					sequence_XExpressionInClosure(context, (XBlockExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBOOLEAN_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBooleanLiteralRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBooleanLiteral(context, (XBooleanLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCASE_PART:
+				if(context == grammarAccess.getXCasePartRule()) {
+					sequence_XCasePart(context, (XCasePart) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCASTED_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XCastedExpression(context, (XCastedExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCATCH_CLAUSE:
+				if(context == grammarAccess.getXCatchClauseRule()) {
+					sequence_XCatchClause(context, (XCatchClause) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCLOSURE:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXClosureRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XClosure(context, (XClosure) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXShortClosureRule()) {
+					sequence_XShortClosure(context, (XClosure) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCONSTRUCTOR_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXConstructorCallRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XConstructorCall(context, (XConstructorCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XDO_WHILE_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXDoWhileExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XDoWhileExpression(context, (XDoWhileExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XFEATURE_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XFeatureCall(context, (XFeatureCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XFOR_LOOP_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXForLoopExpressionRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XForLoopExpression(context, (XForLoopExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XIF_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXIfExpressionRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XIfExpression(context, (XIfExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XINSTANCE_OF_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XRelationalExpression(context, (XInstanceOfExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XLIST_LITERAL:
+				if(context == grammarAccess.getXAnnotationElementValueOrCommaListRule()) {
+					sequence_XAnnotationElementValueOrCommaList_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXAnnotationElementValueRule()) {
+					sequence_XAnnotationElementValue_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXCollectionLiteralRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXListLiteralRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XMEMBER_FEATURE_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XMemberFeatureCall(context, (XMemberFeatureCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XNULL_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXNullLiteralRule() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XNullLiteral(context, (XNullLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XNUMBER_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXNumberLiteralRule() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XNumberLiteral(context, (XNumberLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XPOSTFIX_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XPostfixOperation(context, (XPostfixOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XRETURN_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXReturnExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XReturnExpression(context, (XReturnExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSET_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXCollectionLiteralRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSetLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSetLiteral(context, (XSetLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSTRING_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXStringLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XStringLiteral(context, (XStringLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSWITCH_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSwitchExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSwitchExpression(context, (XSwitchExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSYNCHRONIZED_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSynchronizedExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSynchronizedExpression(context, (XSynchronizedExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTHROW_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXThrowExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XThrowExpression(context, (XThrowExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTRY_CATCH_FINALLY_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXTryCatchFinallyExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XTryCatchFinallyExpression(context, (XTryCatchFinallyExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTYPE_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXTypeLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XTypeLiteral(context, (XTypeLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XUNARY_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XUnaryOperation(context, (XUnaryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XVARIABLE_DECLARATION:
+				if(context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXVariableDeclarationRule()) {
+					sequence_XVariableDeclaration(context, (XVariableDeclaration) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XWHILE_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule() ||
+				   context == grammarAccess.getXWhileExpressionRule()) {
+					sequence_XWhileExpression(context, (XWhileExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XtypePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XtypePackage.XFUNCTION_TYPE_REF:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getXFunctionTypeRefRule()) {
+					sequence_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject); 
+					return; 
+				}
+				else break;
+			case XtypePackage.XIMPORT_DECLARATION:
+				if(context == grammarAccess.getXImportDeclarationRule()) {
+					sequence_XImportDeclaration(context, (XImportDeclaration) semanticObject); 
+					return; 
+				}
+				else break;
+			case XtypePackage.XIMPORT_SECTION:
+				if(context == grammarAccess.getXImportSectionRule()) {
+					sequence_XImportSection(context, (XImportSection) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+	}
+	
+	/**
+	 * Constraint:
+	 *     (axis=[DatamartAxis|ID] renderType=RenderTypeEnum shortLabel?='shortLabel'? angle=SignedNumber?)
+	 */
+	protected void sequence_ChartAxis(EObject context, ChartAxis semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (shadow?='shaded'? animated?='animated'? swapped?='swapped'? stacked?='stacked'?)
+	 */
+	protected void sequence_ChartBar(EObject context, ChartBar semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (((multiplier?='multiplier' multiplierValue=Number)? (gradient?='gradient' | transparent?='transparent'))?)
+	 */
+	protected void sequence_ChartBubble(EObject context, ChartBubble semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (datamartRef=[DatamartDefinition|ID] elements+=ChartElement*)
+	 */
+	protected void sequence_ChartDatamart(EObject context, ChartDatamart semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     {ChartDonut}
+	 */
+	protected void sequence_ChartDonut(EObject context, ChartDonut semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((labeled?='label' labelValue=STRING)? (hasTicks?='hasTicks' minValue=INT maxValue=INT)? (hasIntervals?='intervals' intervals+=ChartInterval*)?)
+	 */
+	protected void sequence_ChartGauge(EObject context, ChartGauge semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (location=TooltipLocationEnum tooltipAlways?='always'? insideChart?='inside'?)
+	 */
+	protected void sequence_ChartHighlighter(EObject context, ChartHighlighter semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     importedNamespace=ChartQualifiedNameWithWildCard
+	 */
+	protected void sequence_ChartImport(EObject context, LImport semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getChartImportAccess().getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (placement=LegendPlacementEnum (toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?)
+	 */
+	protected void sequence_ChartLegend(EObject context, ChartLegend semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         animated?='animated'? 
+	 *         showMarker?='showMarker'? 
+	 *         trendLine?='trendLine'? 
+	 *         (cursor?='cursor' zoom?='zoom'? tooltip?='tooltip'?)? 
+	 *         fillToZero?='fillZero'? 
+	 *         fillArea?='filled'?
+	 *     )
+	 */
+	protected void sequence_ChartLine(EObject context, ChartLine semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     packages+=ChartPackage*
+	 */
+	protected void sequence_ChartModel(EObject context, ChartModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (numberIntervalValue=SignedNumber numberRange=ChartRangeElement)
+	 */
+	protected void sequence_ChartNumberInterval(EObject context, ChartNumberInterval semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE));
+			if(transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_RANGE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_RANGE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0(), semanticObject.getNumberIntervalValue());
+		feeder.accept(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0(), semanticObject.getNumberRange());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=QualifiedName (imports+=ChartImport* charts+=Chart*)?)
+	 */
+	protected void sequence_ChartPackage(EObject context, ChartPackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (empty?='empty'?)
+	 */
+	protected void sequence_ChartPie(EObject context, ChartPie semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     rgb=STRING
+	 */
+	protected void sequence_ChartSegmentColor(EObject context, ChartSegmentColor semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_SEGMENT_COLOR__RGB) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ChartDSLPackage.Literals.CHART_SEGMENT_COLOR__RGB));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0(), semanticObject.getRgb());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (map?='map' | collapsible?='collapsible')
+	 */
+	protected void sequence_ChartTree(EObject context, ChartTree semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=TRANSLATABLEID 
+	 *         (description?='described by' descriptionValue=TRANSLATABLESTRING)? 
+	 *         charttype=ChartOption 
+	 *         (polling?='polling' pollingTime=INT)? 
+	 *         source=ChartDatamart?
+	 *     )
+	 */
+	protected void sequence_Chart(EObject context, Chart semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java
new file mode 100644
index 0000000..e5a06ad
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java
@@ -0,0 +1,177 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+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 ChartDSLSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected ChartDSLGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q;
+	protected AbstractElementAlias match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q;
+	protected AbstractElementAlias match_XBlockExpression_SemicolonKeyword_2_1_q;
+	protected AbstractElementAlias match_XExpressionInClosure_SemicolonKeyword_1_1_q;
+	protected AbstractElementAlias match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q;
+	protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
+	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
+	
+	@Inject
+	protected void init(IGrammarAccess access) {
+		grammarAccess = (ChartDSLGrammarAccess) access;
+		match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3()));
+		match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()));
+		match_XBlockExpression_SemicolonKeyword_2_1_q = new TokenAlias(false, true, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+		match_XExpressionInClosure_SemicolonKeyword_1_1_q = new TokenAlias(false, true, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+		match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()), new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()));
+		match_XImportDeclaration_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+		match_XParenthesizedExpression_LeftParenthesisKeyword_0_a = new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+		match_XParenthesizedExpression_LeftParenthesisKeyword_0_p = new TokenAlias(true, false, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+	}
+	
+	@Override
+	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if(ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
+			return getArrayBracketsToken(semanticObject, ruleCall, node);
+		else if(ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
+			return getOpSingleAssignToken(semanticObject, ruleCall, node);
+		return "";
+	}
+	
+	/**
+	 * ArrayBrackets :
+	 * 	'[' ']'
+	 * ;
+	 */
+	protected String getArrayBracketsToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "[]";
+	}
+	
+	/**
+	 * OpSingleAssign:
+	 * 	'='
+	 * ;
+	 */
+	protected String getOpSingleAssignToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "=";
+	}
+	
+	@Override
+	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+		List<INode> transitionNodes = collectNodes(fromNode, toNode);
+		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
+			if(match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
+				emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XBlockExpression_SemicolonKeyword_2_1_q.equals(syntax))
+				emit_XBlockExpression_SemicolonKeyword_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XExpressionInClosure_SemicolonKeyword_1_1_q.equals(syntax))
+				emit_XExpressionInClosure_SemicolonKeyword_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
+				emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XImportDeclaration_SemicolonKeyword_2_q.equals(syntax))
+				emit_XImportDeclaration_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(syntax))
+				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(syntax))
+				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else acceptNodes(getLastNavigableState(), syntaxNodes);
+		}
+	}
+
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' ')')?
+	 */
+	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' ')')?
+	 */
+	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('*
+	 */
+	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('+
+	 */
+	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java
new file mode 100644
index 0000000..a3f46fe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java
@@ -0,0 +1,2606 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.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 ChartDSLGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class ChartModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesChartPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//ChartModel:
+		//	packages+=ChartPackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=ChartPackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//ChartPackage
+		public RuleCall getPackagesChartPackageParserRuleCall_0() { return cPackagesChartPackageParserRuleCall_0; }
+	}
+
+	public class ChartPackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartPackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartPackageAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPackageKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameQualifiedNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cImportsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cImportsChartImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
+		private final Assignment cChartsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cChartsChartParserRuleCall_3_2_0 = (RuleCall)cChartsAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		
+		//ChartPackage:
+		//	{ChartPackage} "package" name=QualifiedName ("{" imports+=ChartImport* charts+=Chart* "}")?;
+		public ParserRule getRule() { return rule; }
+
+		//{ChartPackage} "package" name=QualifiedName ("{" imports+=ChartImport* charts+=Chart* "}")?
+		public Group getGroup() { return cGroup; }
+
+		//{ChartPackage}
+		public Action getChartPackageAction_0() { return cChartPackageAction_0; }
+
+		//"package"
+		public Keyword getPackageKeyword_1() { return cPackageKeyword_1; }
+
+		//name=QualifiedName
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//QualifiedName
+		public RuleCall getNameQualifiedNameParserRuleCall_2_0() { return cNameQualifiedNameParserRuleCall_2_0; }
+
+		//("{" imports+=ChartImport* charts+=Chart* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
+
+		//imports+=ChartImport*
+		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
+
+		//ChartImport
+		public RuleCall getImportsChartImportParserRuleCall_3_1_0() { return cImportsChartImportParserRuleCall_3_1_0; }
+
+		//charts+=Chart*
+		public Assignment getChartsAssignment_3_2() { return cChartsAssignment_3_2; }
+
+		//Chart
+		public RuleCall getChartsChartParserRuleCall_3_2_0() { return cChartsChartParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+	}
+
+	public class ChartElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Chart");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cChartKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cDescriptionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final Keyword cDescriptionDescribedByKeyword_3_0_0 = (Keyword)cDescriptionAssignment_3_0.eContents().get(0);
+		private final Assignment cDescriptionValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0 = (RuleCall)cDescriptionValueAssignment_3_1.eContents().get(0);
+		private final Keyword cAsKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cCharttypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cCharttypeChartOptionParserRuleCall_5_0 = (RuleCall)cCharttypeAssignment_5.eContents().get(0);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Assignment cPollingAssignment_6_0 = (Assignment)cGroup_6.eContents().get(0);
+		private final Keyword cPollingPollingKeyword_6_0_0 = (Keyword)cPollingAssignment_6_0.eContents().get(0);
+		private final Assignment cPollingTimeAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
+		private final RuleCall cPollingTimeINTTerminalRuleCall_6_1_0 = (RuleCall)cPollingTimeAssignment_6_1.eContents().get(0);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cUsingKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Assignment cSourceAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
+		private final RuleCall cSourceChartDatamartParserRuleCall_7_1_0 = (RuleCall)cSourceAssignment_7_1.eContents().get(0);
+		
+		//Chart:
+		//	{Chart} "chart" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? "as"
+		//	charttype=ChartOption (polling?="polling" pollingTime=INT)? ("using" source=ChartDatamart)?;
+		public ParserRule getRule() { return rule; }
+
+		//{Chart} "chart" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? "as"
+		//charttype=ChartOption (polling?="polling" pollingTime=INT)? ("using" source=ChartDatamart)?
+		public Group getGroup() { return cGroup; }
+
+		//{Chart}
+		public Action getChartAction_0() { return cChartAction_0; }
+
+		//"chart"
+		public Keyword getChartKeyword_1() { return cChartKeyword_1; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
+
+		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//description?="described by"
+		public Assignment getDescriptionAssignment_3_0() { return cDescriptionAssignment_3_0; }
+
+		//"described by"
+		public Keyword getDescriptionDescribedByKeyword_3_0_0() { return cDescriptionDescribedByKeyword_3_0_0; }
+
+		//descriptionValue=TRANSLATABLESTRING
+		public Assignment getDescriptionValueAssignment_3_1() { return cDescriptionValueAssignment_3_1; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0; }
+
+		//"as"
+		public Keyword getAsKeyword_4() { return cAsKeyword_4; }
+
+		//charttype=ChartOption
+		public Assignment getCharttypeAssignment_5() { return cCharttypeAssignment_5; }
+
+		//ChartOption
+		public RuleCall getCharttypeChartOptionParserRuleCall_5_0() { return cCharttypeChartOptionParserRuleCall_5_0; }
+
+		//(polling?="polling" pollingTime=INT)?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//polling?="polling"
+		public Assignment getPollingAssignment_6_0() { return cPollingAssignment_6_0; }
+
+		//"polling"
+		public Keyword getPollingPollingKeyword_6_0_0() { return cPollingPollingKeyword_6_0_0; }
+
+		//pollingTime=INT
+		public Assignment getPollingTimeAssignment_6_1() { return cPollingTimeAssignment_6_1; }
+
+		//INT
+		public RuleCall getPollingTimeINTTerminalRuleCall_6_1_0() { return cPollingTimeINTTerminalRuleCall_6_1_0; }
+
+		//("using" source=ChartDatamart)?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"using"
+		public Keyword getUsingKeyword_7_0() { return cUsingKeyword_7_0; }
+
+		//source=ChartDatamart
+		public Assignment getSourceAssignment_7_1() { return cSourceAssignment_7_1; }
+
+		//ChartDatamart
+		public RuleCall getSourceChartDatamartParserRuleCall_7_1_0() { return cSourceChartDatamartParserRuleCall_7_1_0; }
+	}
+
+	public class ChartOptionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartOption");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cChartBarParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cChartLineParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cChartPieParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cChartDonutParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cChartBubbleParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cChartGaugeParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cChartTreeParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		
+		//ChartOption:
+		//	ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree;
+		public ParserRule getRule() { return rule; }
+
+		//ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ChartBar
+		public RuleCall getChartBarParserRuleCall_0() { return cChartBarParserRuleCall_0; }
+
+		//ChartLine
+		public RuleCall getChartLineParserRuleCall_1() { return cChartLineParserRuleCall_1; }
+
+		//ChartPie
+		public RuleCall getChartPieParserRuleCall_2() { return cChartPieParserRuleCall_2; }
+
+		//ChartDonut
+		public RuleCall getChartDonutParserRuleCall_3() { return cChartDonutParserRuleCall_3; }
+
+		//ChartBubble
+		public RuleCall getChartBubbleParserRuleCall_4() { return cChartBubbleParserRuleCall_4; }
+
+		//ChartGauge
+		public RuleCall getChartGaugeParserRuleCall_5() { return cChartGaugeParserRuleCall_5; }
+
+		//ChartTree
+		public RuleCall getChartTreeParserRuleCall_6() { return cChartTreeParserRuleCall_6; }
+	}
+
+	public class ChartBarElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartBar");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartBarAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cBarKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final UnorderedGroup cUnorderedGroup_2 = (UnorderedGroup)cGroup.eContents().get(2);
+		private final Assignment cShadowAssignment_2_0 = (Assignment)cUnorderedGroup_2.eContents().get(0);
+		private final Keyword cShadowShadedKeyword_2_0_0 = (Keyword)cShadowAssignment_2_0.eContents().get(0);
+		private final Assignment cAnimatedAssignment_2_1 = (Assignment)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cAnimatedAnimatedKeyword_2_1_0 = (Keyword)cAnimatedAssignment_2_1.eContents().get(0);
+		private final Assignment cSwappedAssignment_2_2 = (Assignment)cUnorderedGroup_2.eContents().get(2);
+		private final Keyword cSwappedSwappedKeyword_2_2_0 = (Keyword)cSwappedAssignment_2_2.eContents().get(0);
+		private final Assignment cStackedAssignment_2_3 = (Assignment)cUnorderedGroup_2.eContents().get(3);
+		private final Keyword cStackedStackedKeyword_2_3_0 = (Keyword)cStackedAssignment_2_3.eContents().get(0);
+		
+		//ChartBar:
+		//	{ChartBar} "bar" (shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?);
+		public ParserRule getRule() { return rule; }
+
+		//{ChartBar} "bar" (shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?)
+		public Group getGroup() { return cGroup; }
+
+		//{ChartBar}
+		public Action getChartBarAction_0() { return cChartBarAction_0; }
+
+		//"bar"
+		public Keyword getBarKeyword_1() { return cBarKeyword_1; }
+
+		//shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//shadow?="shaded"?
+		public Assignment getShadowAssignment_2_0() { return cShadowAssignment_2_0; }
+
+		//"shaded"
+		public Keyword getShadowShadedKeyword_2_0_0() { return cShadowShadedKeyword_2_0_0; }
+
+		//animated?="animated"?
+		public Assignment getAnimatedAssignment_2_1() { return cAnimatedAssignment_2_1; }
+
+		//"animated"
+		public Keyword getAnimatedAnimatedKeyword_2_1_0() { return cAnimatedAnimatedKeyword_2_1_0; }
+
+		//swapped?="swapped"?
+		public Assignment getSwappedAssignment_2_2() { return cSwappedAssignment_2_2; }
+
+		//"swapped"
+		public Keyword getSwappedSwappedKeyword_2_2_0() { return cSwappedSwappedKeyword_2_2_0; }
+
+		//stacked?="stacked"?
+		public Assignment getStackedAssignment_2_3() { return cStackedAssignment_2_3; }
+
+		//"stacked"
+		public Keyword getStackedStackedKeyword_2_3_0() { return cStackedStackedKeyword_2_3_0; }
+	}
+
+	public class ChartLineElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartLine");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartLineAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cLineKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final UnorderedGroup cUnorderedGroup_2 = (UnorderedGroup)cGroup.eContents().get(2);
+		private final Assignment cAnimatedAssignment_2_0 = (Assignment)cUnorderedGroup_2.eContents().get(0);
+		private final Keyword cAnimatedAnimatedKeyword_2_0_0 = (Keyword)cAnimatedAssignment_2_0.eContents().get(0);
+		private final Assignment cShowMarkerAssignment_2_1 = (Assignment)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cShowMarkerShowMarkerKeyword_2_1_0 = (Keyword)cShowMarkerAssignment_2_1.eContents().get(0);
+		private final Assignment cTrendLineAssignment_2_2 = (Assignment)cUnorderedGroup_2.eContents().get(2);
+		private final Keyword cTrendLineTrendLineKeyword_2_2_0 = (Keyword)cTrendLineAssignment_2_2.eContents().get(0);
+		private final Group cGroup_2_3 = (Group)cUnorderedGroup_2.eContents().get(3);
+		private final Assignment cCursorAssignment_2_3_0 = (Assignment)cGroup_2_3.eContents().get(0);
+		private final Keyword cCursorCursorKeyword_2_3_0_0 = (Keyword)cCursorAssignment_2_3_0.eContents().get(0);
+		private final Assignment cZoomAssignment_2_3_1 = (Assignment)cGroup_2_3.eContents().get(1);
+		private final Keyword cZoomZoomKeyword_2_3_1_0 = (Keyword)cZoomAssignment_2_3_1.eContents().get(0);
+		private final Assignment cTooltipAssignment_2_3_2 = (Assignment)cGroup_2_3.eContents().get(2);
+		private final Keyword cTooltipTooltipKeyword_2_3_2_0 = (Keyword)cTooltipAssignment_2_3_2.eContents().get(0);
+		private final Assignment cFillToZeroAssignment_2_4 = (Assignment)cUnorderedGroup_2.eContents().get(4);
+		private final Keyword cFillToZeroFillZeroKeyword_2_4_0 = (Keyword)cFillToZeroAssignment_2_4.eContents().get(0);
+		private final Assignment cFillAreaAssignment_2_5 = (Assignment)cUnorderedGroup_2.eContents().get(5);
+		private final Keyword cFillAreaFilledKeyword_2_5_0 = (Keyword)cFillAreaAssignment_2_5.eContents().get(0);
+		
+		//ChartLine:
+		//	{ChartLine} "line" (animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor"
+		//	zoom?="zoom"? tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?);
+		public ParserRule getRule() { return rule; }
+
+		//{ChartLine} "line" (animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor"
+		//zoom?="zoom"? tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?)
+		public Group getGroup() { return cGroup; }
+
+		//{ChartLine}
+		public Action getChartLineAction_0() { return cChartLineAction_0; }
+
+		//"line"
+		public Keyword getLineKeyword_1() { return cLineKeyword_1; }
+
+		//animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor" zoom?="zoom"?
+		//tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//animated?="animated"?
+		public Assignment getAnimatedAssignment_2_0() { return cAnimatedAssignment_2_0; }
+
+		//"animated"
+		public Keyword getAnimatedAnimatedKeyword_2_0_0() { return cAnimatedAnimatedKeyword_2_0_0; }
+
+		//showMarker?="showMarker"?
+		public Assignment getShowMarkerAssignment_2_1() { return cShowMarkerAssignment_2_1; }
+
+		//"showMarker"
+		public Keyword getShowMarkerShowMarkerKeyword_2_1_0() { return cShowMarkerShowMarkerKeyword_2_1_0; }
+
+		//trendLine?="trendLine"?
+		public Assignment getTrendLineAssignment_2_2() { return cTrendLineAssignment_2_2; }
+
+		//"trendLine"
+		public Keyword getTrendLineTrendLineKeyword_2_2_0() { return cTrendLineTrendLineKeyword_2_2_0; }
+
+		//(cursor?="cursor" zoom?="zoom"? tooltip?="tooltip"?)?
+		public Group getGroup_2_3() { return cGroup_2_3; }
+
+		//cursor?="cursor"
+		public Assignment getCursorAssignment_2_3_0() { return cCursorAssignment_2_3_0; }
+
+		//"cursor"
+		public Keyword getCursorCursorKeyword_2_3_0_0() { return cCursorCursorKeyword_2_3_0_0; }
+
+		//zoom?="zoom"?
+		public Assignment getZoomAssignment_2_3_1() { return cZoomAssignment_2_3_1; }
+
+		//"zoom"
+		public Keyword getZoomZoomKeyword_2_3_1_0() { return cZoomZoomKeyword_2_3_1_0; }
+
+		//tooltip?="tooltip"?
+		public Assignment getTooltipAssignment_2_3_2() { return cTooltipAssignment_2_3_2; }
+
+		//"tooltip"
+		public Keyword getTooltipTooltipKeyword_2_3_2_0() { return cTooltipTooltipKeyword_2_3_2_0; }
+
+		//fillToZero?="fillZero"?
+		public Assignment getFillToZeroAssignment_2_4() { return cFillToZeroAssignment_2_4; }
+
+		//"fillZero"
+		public Keyword getFillToZeroFillZeroKeyword_2_4_0() { return cFillToZeroFillZeroKeyword_2_4_0; }
+
+		//fillArea?="filled"?
+		public Assignment getFillAreaAssignment_2_5() { return cFillAreaAssignment_2_5; }
+
+		//"filled"
+		public Keyword getFillAreaFilledKeyword_2_5_0() { return cFillAreaFilledKeyword_2_5_0; }
+	}
+
+	public class ChartPieElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartPie");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartPieAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPieKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cEmptyAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cEmptyEmptyKeyword_2_0 = (Keyword)cEmptyAssignment_2.eContents().get(0);
+		
+		//ChartPie:
+		//	{ChartPie} "pie" empty?="empty"?;
+		public ParserRule getRule() { return rule; }
+
+		//{ChartPie} "pie" empty?="empty"?
+		public Group getGroup() { return cGroup; }
+
+		//{ChartPie}
+		public Action getChartPieAction_0() { return cChartPieAction_0; }
+
+		//"pie"
+		public Keyword getPieKeyword_1() { return cPieKeyword_1; }
+
+		//empty?="empty"?
+		public Assignment getEmptyAssignment_2() { return cEmptyAssignment_2; }
+
+		//"empty"
+		public Keyword getEmptyEmptyKeyword_2_0() { return cEmptyEmptyKeyword_2_0; }
+	}
+
+	public class ChartDonutElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartDonut");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartDonutAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cDonutKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//ChartDonut:
+		//	{ChartDonut} "donut";
+		public ParserRule getRule() { return rule; }
+
+		//{ChartDonut} "donut"
+		public Group getGroup() { return cGroup; }
+
+		//{ChartDonut}
+		public Action getChartDonutAction_0() { return cChartDonutAction_0; }
+
+		//"donut"
+		public Keyword getDonutKeyword_1() { return cDonutKeyword_1; }
+	}
+
+	public class ChartBubbleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartBubble");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartBubbleAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cBubbleKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final UnorderedGroup cUnorderedGroup_2 = (UnorderedGroup)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cUnorderedGroup_2.eContents().get(0);
+		private final Assignment cMultiplierAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
+		private final Keyword cMultiplierMultiplierKeyword_2_0_0_0 = (Keyword)cMultiplierAssignment_2_0_0.eContents().get(0);
+		private final Assignment cMultiplierValueAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
+		private final RuleCall cMultiplierValueNumberParserRuleCall_2_0_1_0 = (RuleCall)cMultiplierValueAssignment_2_0_1.eContents().get(0);
+		private final Alternatives cAlternatives_2_1 = (Alternatives)cUnorderedGroup_2.eContents().get(1);
+		private final Assignment cGradientAssignment_2_1_0 = (Assignment)cAlternatives_2_1.eContents().get(0);
+		private final Keyword cGradientGradientKeyword_2_1_0_0 = (Keyword)cGradientAssignment_2_1_0.eContents().get(0);
+		private final Assignment cTransparentAssignment_2_1_1 = (Assignment)cAlternatives_2_1.eContents().get(1);
+		private final Keyword cTransparentTransparentKeyword_2_1_1_0 = (Keyword)cTransparentAssignment_2_1_1.eContents().get(0);
+		
+		//ChartBubble:
+		//	{ChartBubble} "bubble" ((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" |
+		//	transparent?="transparent"))?;
+		public ParserRule getRule() { return rule; }
+
+		//{ChartBubble} "bubble" ((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" |
+		//transparent?="transparent"))?
+		public Group getGroup() { return cGroup; }
+
+		//{ChartBubble}
+		public Action getChartBubbleAction_0() { return cChartBubbleAction_0; }
+
+		//"bubble"
+		public Keyword getBubbleKeyword_1() { return cBubbleKeyword_1; }
+
+		//((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" | transparent?="transparent"))?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//(multiplier?="multiplier" multiplierValue=Number)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//multiplier?="multiplier"
+		public Assignment getMultiplierAssignment_2_0_0() { return cMultiplierAssignment_2_0_0; }
+
+		//"multiplier"
+		public Keyword getMultiplierMultiplierKeyword_2_0_0_0() { return cMultiplierMultiplierKeyword_2_0_0_0; }
+
+		//multiplierValue=Number
+		public Assignment getMultiplierValueAssignment_2_0_1() { return cMultiplierValueAssignment_2_0_1; }
+
+		//Number
+		public RuleCall getMultiplierValueNumberParserRuleCall_2_0_1_0() { return cMultiplierValueNumberParserRuleCall_2_0_1_0; }
+
+		//gradient?="gradient" | transparent?="transparent"
+		public Alternatives getAlternatives_2_1() { return cAlternatives_2_1; }
+
+		//gradient?="gradient"
+		public Assignment getGradientAssignment_2_1_0() { return cGradientAssignment_2_1_0; }
+
+		//"gradient"
+		public Keyword getGradientGradientKeyword_2_1_0_0() { return cGradientGradientKeyword_2_1_0_0; }
+
+		//transparent?="transparent"
+		public Assignment getTransparentAssignment_2_1_1() { return cTransparentAssignment_2_1_1; }
+
+		//"transparent"
+		public Keyword getTransparentTransparentKeyword_2_1_1_0() { return cTransparentTransparentKeyword_2_1_1_0; }
+	}
+
+	public class ChartGaugeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartGauge");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartGaugeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cGaugeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final UnorderedGroup cUnorderedGroup_2 = (UnorderedGroup)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cUnorderedGroup_2.eContents().get(0);
+		private final Assignment cLabeledAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
+		private final Keyword cLabeledLabelKeyword_2_0_0_0 = (Keyword)cLabeledAssignment_2_0_0.eContents().get(0);
+		private final Assignment cLabelValueAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
+		private final RuleCall cLabelValueSTRINGTerminalRuleCall_2_0_1_0 = (RuleCall)cLabelValueAssignment_2_0_1.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Assignment cHasTicksAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
+		private final Keyword cHasTicksHasTicksKeyword_2_1_0_0 = (Keyword)cHasTicksAssignment_2_1_0.eContents().get(0);
+		private final Keyword cMinimumKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMinValueAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMinValueINTTerminalRuleCall_2_1_2_0 = (RuleCall)cMinValueAssignment_2_1_2.eContents().get(0);
+		private final Keyword cMaximumKeyword_2_1_3 = (Keyword)cGroup_2_1.eContents().get(3);
+		private final Assignment cMaxValueAssignment_2_1_4 = (Assignment)cGroup_2_1.eContents().get(4);
+		private final RuleCall cMaxValueINTTerminalRuleCall_2_1_4_0 = (RuleCall)cMaxValueAssignment_2_1_4.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Assignment cHasIntervalsAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
+		private final Keyword cHasIntervalsIntervalsKeyword_2_2_0_0 = (Keyword)cHasIntervalsAssignment_2_2_0.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		private final Assignment cIntervalsAssignment_2_2_2 = (Assignment)cGroup_2_2.eContents().get(2);
+		private final RuleCall cIntervalsChartIntervalParserRuleCall_2_2_2_0 = (RuleCall)cIntervalsAssignment_2_2_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_2_3 = (Keyword)cGroup_2_2.eContents().get(3);
+		
+		//ChartGauge:
+		//	{ChartGauge} "gauge" ((labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum"
+		//	maxValue=INT)? & (hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?);
+		public ParserRule getRule() { return rule; }
+
+		//{ChartGauge} "gauge" ((labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum"
+		//maxValue=INT)? & (hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?)
+		public Group getGroup() { return cGroup; }
+
+		//{ChartGauge}
+		public Action getChartGaugeAction_0() { return cChartGaugeAction_0; }
+
+		//"gauge"
+		public Keyword getGaugeKeyword_1() { return cGaugeKeyword_1; }
+
+		//(labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum" maxValue=INT)? &
+		//(hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//(labeled?="label" labelValue=STRING)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//labeled?="label"
+		public Assignment getLabeledAssignment_2_0_0() { return cLabeledAssignment_2_0_0; }
+
+		//"label"
+		public Keyword getLabeledLabelKeyword_2_0_0_0() { return cLabeledLabelKeyword_2_0_0_0; }
+
+		//labelValue=STRING
+		public Assignment getLabelValueAssignment_2_0_1() { return cLabelValueAssignment_2_0_1; }
+
+		//STRING
+		public RuleCall getLabelValueSTRINGTerminalRuleCall_2_0_1_0() { return cLabelValueSTRINGTerminalRuleCall_2_0_1_0; }
+
+		//(hasTicks?="hasTicks" "minimum" minValue=INT "maximum" maxValue=INT)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//hasTicks?="hasTicks"
+		public Assignment getHasTicksAssignment_2_1_0() { return cHasTicksAssignment_2_1_0; }
+
+		//"hasTicks"
+		public Keyword getHasTicksHasTicksKeyword_2_1_0_0() { return cHasTicksHasTicksKeyword_2_1_0_0; }
+
+		//"minimum"
+		public Keyword getMinimumKeyword_2_1_1() { return cMinimumKeyword_2_1_1; }
+
+		//minValue=INT
+		public Assignment getMinValueAssignment_2_1_2() { return cMinValueAssignment_2_1_2; }
+
+		//INT
+		public RuleCall getMinValueINTTerminalRuleCall_2_1_2_0() { return cMinValueINTTerminalRuleCall_2_1_2_0; }
+
+		//"maximum"
+		public Keyword getMaximumKeyword_2_1_3() { return cMaximumKeyword_2_1_3; }
+
+		//maxValue=INT
+		public Assignment getMaxValueAssignment_2_1_4() { return cMaxValueAssignment_2_1_4; }
+
+		//INT
+		public RuleCall getMaxValueINTTerminalRuleCall_2_1_4_0() { return cMaxValueINTTerminalRuleCall_2_1_4_0; }
+
+		//(hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//hasIntervals?="intervals"
+		public Assignment getHasIntervalsAssignment_2_2_0() { return cHasIntervalsAssignment_2_2_0; }
+
+		//"intervals"
+		public Keyword getHasIntervalsIntervalsKeyword_2_2_0_0() { return cHasIntervalsIntervalsKeyword_2_2_0_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_2_1() { return cLeftCurlyBracketKeyword_2_2_1; }
+
+		//intervals+=ChartInterval*
+		public Assignment getIntervalsAssignment_2_2_2() { return cIntervalsAssignment_2_2_2; }
+
+		//ChartInterval
+		public RuleCall getIntervalsChartIntervalParserRuleCall_2_2_2_0() { return cIntervalsChartIntervalParserRuleCall_2_2_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_2_3() { return cRightCurlyBracketKeyword_2_2_3; }
+	}
+
+	public class ChartTreeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartTree");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartTreeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cTreeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Assignment cMapAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+		private final Keyword cMapMapKeyword_2_0_0 = (Keyword)cMapAssignment_2_0.eContents().get(0);
+		private final Assignment cCollapsibleAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+		private final Keyword cCollapsibleCollapsibleKeyword_2_1_0 = (Keyword)cCollapsibleAssignment_2_1.eContents().get(0);
+		
+		//ChartTree:
+		//	{ChartTree} "tree" (map?="map" | collapsible?="collapsible");
+		public ParserRule getRule() { return rule; }
+
+		//{ChartTree} "tree" (map?="map" | collapsible?="collapsible")
+		public Group getGroup() { return cGroup; }
+
+		//{ChartTree}
+		public Action getChartTreeAction_0() { return cChartTreeAction_0; }
+
+		//"tree"
+		public Keyword getTreeKeyword_1() { return cTreeKeyword_1; }
+
+		//map?="map" | collapsible?="collapsible"
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//map?="map"
+		public Assignment getMapAssignment_2_0() { return cMapAssignment_2_0; }
+
+		//"map"
+		public Keyword getMapMapKeyword_2_0_0() { return cMapMapKeyword_2_0_0; }
+
+		//collapsible?="collapsible"
+		public Assignment getCollapsibleAssignment_2_1() { return cCollapsibleAssignment_2_1; }
+
+		//"collapsible"
+		public Keyword getCollapsibleCollapsibleKeyword_2_1_0() { return cCollapsibleCollapsibleKeyword_2_1_0; }
+	}
+
+	public class ChartIntervalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartInterval");
+		private final RuleCall cChartNumberIntervalParserRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//ChartInterval:
+		//	ChartNumberInterval;
+		public ParserRule getRule() { return rule; }
+
+		//ChartNumberInterval
+		public RuleCall getChartNumberIntervalParserRuleCall() { return cChartNumberIntervalParserRuleCall; }
+	}
+
+	public class ChartNumberIntervalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartNumberInterval");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cChartNumberIntervalAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cUpToKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNumberIntervalValueAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNumberIntervalValueSignedNumberParserRuleCall_2_0 = (RuleCall)cNumberIntervalValueAssignment_2.eContents().get(0);
+		private final Assignment cNumberRangeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cNumberRangeChartRangeElementParserRuleCall_3_0 = (RuleCall)cNumberRangeAssignment_3.eContents().get(0);
+		
+		//ChartNumberInterval:
+		//	{ChartNumberInterval} "up to" numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
+		public ParserRule getRule() { return rule; }
+
+		//{ChartNumberInterval} "up to" numberIntervalValue=SignedNumber numberRange=ChartRangeElement
+		public Group getGroup() { return cGroup; }
+
+		//{ChartNumberInterval}
+		public Action getChartNumberIntervalAction_0() { return cChartNumberIntervalAction_0; }
+
+		//"up to"
+		public Keyword getUpToKeyword_1() { return cUpToKeyword_1; }
+
+		//numberIntervalValue=SignedNumber
+		public Assignment getNumberIntervalValueAssignment_2() { return cNumberIntervalValueAssignment_2; }
+
+		//SignedNumber
+		public RuleCall getNumberIntervalValueSignedNumberParserRuleCall_2_0() { return cNumberIntervalValueSignedNumberParserRuleCall_2_0; }
+
+		//numberRange=ChartRangeElement
+		public Assignment getNumberRangeAssignment_3() { return cNumberRangeAssignment_3; }
+
+		//ChartRangeElement
+		public RuleCall getNumberRangeChartRangeElementParserRuleCall_3_0() { return cNumberRangeChartRangeElementParserRuleCall_3_0; }
+	}
+
+	public class ChartDatamartElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartDatamart");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDatamartKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDatamartRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cDatamartRefDatamartDefinitionCrossReference_1_0 = (CrossReference)cDatamartRefAssignment_1.eContents().get(0);
+		private final RuleCall cDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1 = (RuleCall)cDatamartRefDatamartDefinitionCrossReference_1_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cElementsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cElementsChartElementParserRuleCall_3_0 = (RuleCall)cElementsAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ChartDatamart:
+		//	"datamart" datamartRef=[datamart::DatamartDefinition] "{" elements+=ChartElement* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"datamart" datamartRef=[datamart::DatamartDefinition] "{" elements+=ChartElement* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"datamart"
+		public Keyword getDatamartKeyword_0() { return cDatamartKeyword_0; }
+
+		//datamartRef=[datamart::DatamartDefinition]
+		public Assignment getDatamartRefAssignment_1() { return cDatamartRefAssignment_1; }
+
+		//[datamart::DatamartDefinition]
+		public CrossReference getDatamartRefDatamartDefinitionCrossReference_1_0() { return cDatamartRefDatamartDefinitionCrossReference_1_0; }
+
+		//ID
+		public RuleCall getDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1() { return cDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//elements+=ChartElement*
+		public Assignment getElementsAssignment_3() { return cElementsAssignment_3; }
+
+		//ChartElement
+		public RuleCall getElementsChartElementParserRuleCall_3_0() { return cElementsChartElementParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ChartElementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartElement");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cChartAxisParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cChartLegendParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cChartHighlighterParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//ChartElement:
+		//	ChartAxis | ChartLegend | ChartHighlighter;
+		public ParserRule getRule() { return rule; }
+
+		//ChartAxis | ChartLegend | ChartHighlighter
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ChartAxis
+		public RuleCall getChartAxisParserRuleCall_0() { return cChartAxisParserRuleCall_0; }
+
+		//ChartLegend
+		public RuleCall getChartLegendParserRuleCall_1() { return cChartLegendParserRuleCall_1; }
+
+		//ChartHighlighter
+		public RuleCall getChartHighlighterParserRuleCall_2() { return cChartHighlighterParserRuleCall_2; }
+	}
+
+	public class ChartLegendElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartLegend");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLegendKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cPlacementAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cPlacementLegendPlacementEnumEnumRuleCall_1_0 = (RuleCall)cPlacementAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cToggleAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cToggleToggleKeyword_2_0_0 = (Keyword)cToggleAssignment_2_0.eContents().get(0);
+		private final Assignment cReplotAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final Keyword cReplotReplotKeyword_2_1_0 = (Keyword)cReplotAssignment_2_1.eContents().get(0);
+		private final Assignment cToggleTypeAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cToggleTypeToggleTypeEnumEnumRuleCall_2_2_0 = (RuleCall)cToggleTypeAssignment_2_2.eContents().get(0);
+		
+		//ChartLegend:
+		//	"legend" placement=LegendPlacementEnum (toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?;
+		public ParserRule getRule() { return rule; }
+
+		//"legend" placement=LegendPlacementEnum (toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?
+		public Group getGroup() { return cGroup; }
+
+		//"legend"
+		public Keyword getLegendKeyword_0() { return cLegendKeyword_0; }
+
+		//placement=LegendPlacementEnum
+		public Assignment getPlacementAssignment_1() { return cPlacementAssignment_1; }
+
+		//LegendPlacementEnum
+		public RuleCall getPlacementLegendPlacementEnumEnumRuleCall_1_0() { return cPlacementLegendPlacementEnumEnumRuleCall_1_0; }
+
+		//(toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//toggle?="toggle"
+		public Assignment getToggleAssignment_2_0() { return cToggleAssignment_2_0; }
+
+		//"toggle"
+		public Keyword getToggleToggleKeyword_2_0_0() { return cToggleToggleKeyword_2_0_0; }
+
+		//replot?="replot"
+		public Assignment getReplotAssignment_2_1() { return cReplotAssignment_2_1; }
+
+		//"replot"
+		public Keyword getReplotReplotKeyword_2_1_0() { return cReplotReplotKeyword_2_1_0; }
+
+		//toggleType=ToggleTypeEnum
+		public Assignment getToggleTypeAssignment_2_2() { return cToggleTypeAssignment_2_2; }
+
+		//ToggleTypeEnum
+		public RuleCall getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0() { return cToggleTypeToggleTypeEnumEnumRuleCall_2_2_0; }
+	}
+
+	public class ChartHighlighterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartHighlighter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cTooltipKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cLocationAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cLocationTooltipLocationEnumEnumRuleCall_1_0 = (RuleCall)cLocationAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cTooltipAlwaysAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cTooltipAlwaysAlwaysKeyword_2_0_0 = (Keyword)cTooltipAlwaysAssignment_2_0.eContents().get(0);
+		private final Assignment cInsideChartAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final Keyword cInsideChartInsideKeyword_2_1_0 = (Keyword)cInsideChartAssignment_2_1.eContents().get(0);
+		
+		//ChartHighlighter:
+		//	"tooltip" location=TooltipLocationEnum (tooltipAlways?="always"? insideChart?="inside"?);
+		public ParserRule getRule() { return rule; }
+
+		//"tooltip" location=TooltipLocationEnum (tooltipAlways?="always"? insideChart?="inside"?)
+		public Group getGroup() { return cGroup; }
+
+		//"tooltip"
+		public Keyword getTooltipKeyword_0() { return cTooltipKeyword_0; }
+
+		//location=TooltipLocationEnum
+		public Assignment getLocationAssignment_1() { return cLocationAssignment_1; }
+
+		//TooltipLocationEnum
+		public RuleCall getLocationTooltipLocationEnumEnumRuleCall_1_0() { return cLocationTooltipLocationEnumEnumRuleCall_1_0; }
+
+		//tooltipAlways?="always"? insideChart?="inside"?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//tooltipAlways?="always"?
+		public Assignment getTooltipAlwaysAssignment_2_0() { return cTooltipAlwaysAssignment_2_0; }
+
+		//"always"
+		public Keyword getTooltipAlwaysAlwaysKeyword_2_0_0() { return cTooltipAlwaysAlwaysKeyword_2_0_0; }
+
+		//insideChart?="inside"?
+		public Assignment getInsideChartAssignment_2_1() { return cInsideChartAssignment_2_1; }
+
+		//"inside"
+		public Keyword getInsideChartInsideKeyword_2_1_0() { return cInsideChartInsideKeyword_2_1_0; }
+	}
+
+	public class ChartAxisElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartAxis");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cAxisKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAxisAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAxisDatamartAxisCrossReference_1_0 = (CrossReference)cAxisAssignment_1.eContents().get(0);
+		private final RuleCall cAxisDatamartAxisIDTerminalRuleCall_1_0_1 = (RuleCall)cAxisDatamartAxisCrossReference_1_0.eContents().get(1);
+		private final Keyword cRendersKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cRenderTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cRenderTypeRenderTypeEnumEnumRuleCall_3_0 = (RuleCall)cRenderTypeAssignment_3.eContents().get(0);
+		private final Assignment cShortLabelAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final Keyword cShortLabelShortLabelKeyword_4_0 = (Keyword)cShortLabelAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cTickangleKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cAngleAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final RuleCall cAngleSignedNumberParserRuleCall_5_1_0 = (RuleCall)cAngleAssignment_5_1.eContents().get(0);
+		
+		//ChartAxis:
+		//	"axis" axis=[datamart::DatamartAxis] "renders" renderType=RenderTypeEnum shortLabel?="shortLabel"? ("tickangle"
+		//	angle=SignedNumber)?;
+		public ParserRule getRule() { return rule; }
+
+		//"axis" axis=[datamart::DatamartAxis] "renders" renderType=RenderTypeEnum shortLabel?="shortLabel"? ("tickangle"
+		//angle=SignedNumber)?
+		public Group getGroup() { return cGroup; }
+
+		//"axis"
+		public Keyword getAxisKeyword_0() { return cAxisKeyword_0; }
+
+		//axis=[datamart::DatamartAxis]
+		public Assignment getAxisAssignment_1() { return cAxisAssignment_1; }
+
+		//[datamart::DatamartAxis]
+		public CrossReference getAxisDatamartAxisCrossReference_1_0() { return cAxisDatamartAxisCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAxisDatamartAxisIDTerminalRuleCall_1_0_1() { return cAxisDatamartAxisIDTerminalRuleCall_1_0_1; }
+
+		//"renders"
+		public Keyword getRendersKeyword_2() { return cRendersKeyword_2; }
+
+		//renderType=RenderTypeEnum
+		public Assignment getRenderTypeAssignment_3() { return cRenderTypeAssignment_3; }
+
+		//RenderTypeEnum
+		public RuleCall getRenderTypeRenderTypeEnumEnumRuleCall_3_0() { return cRenderTypeRenderTypeEnumEnumRuleCall_3_0; }
+
+		//shortLabel?="shortLabel"?
+		public Assignment getShortLabelAssignment_4() { return cShortLabelAssignment_4; }
+
+		//"shortLabel"
+		public Keyword getShortLabelShortLabelKeyword_4_0() { return cShortLabelShortLabelKeyword_4_0; }
+
+		//("tickangle" angle=SignedNumber)?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"tickangle"
+		public Keyword getTickangleKeyword_5_0() { return cTickangleKeyword_5_0; }
+
+		//angle=SignedNumber
+		public Assignment getAngleAssignment_5_1() { return cAngleAssignment_5_1; }
+
+		//SignedNumber
+		public RuleCall getAngleSignedNumberParserRuleCall_5_1_0() { return cAngleSignedNumberParserRuleCall_5_1_0; }
+	}
+
+	public class ChartRangeElementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartRangeElement");
+		private final RuleCall cChartSegmentColorParserRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//ChartRangeElement:
+		//	ChartSegmentColor;
+		public ParserRule getRule() { return rule; }
+
+		//ChartSegmentColor
+		public RuleCall getChartSegmentColorParserRuleCall() { return cChartSegmentColorParserRuleCall; }
+	}
+
+	public class ChartSegmentColorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartSegmentColor");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSegmentcolorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cRgbAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cRgbSTRINGTerminalRuleCall_1_0 = (RuleCall)cRgbAssignment_1.eContents().get(0);
+		
+		//ChartSegmentColor:
+		//	"segmentcolor" rgb=STRING;
+		public ParserRule getRule() { return rule; }
+
+		//"segmentcolor" rgb=STRING
+		public Group getGroup() { return cGroup; }
+
+		//"segmentcolor"
+		public Keyword getSegmentcolorKeyword_0() { return cSegmentcolorKeyword_0; }
+
+		//rgb=STRING
+		public Assignment getRgbAssignment_1() { return cRgbAssignment_1; }
+
+		//STRING
+		public RuleCall getRgbSTRINGTerminalRuleCall_1_0() { return cRgbSTRINGTerminalRuleCall_1_0; }
+	}
+
+	public class ChartImportElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartImport");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cImportedNamespaceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
+		
+		//ChartImport returns types::LImport:
+		//	"import" importedNamespace=ChartQualifiedNameWithWildCard;
+		public ParserRule getRule() { return rule; }
+
+		//"import" importedNamespace=ChartQualifiedNameWithWildCard
+		public Group getGroup() { return cGroup; }
+
+		//"import"
+		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
+
+		//importedNamespace=ChartQualifiedNameWithWildCard
+		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
+
+		//ChartQualifiedNameWithWildCard
+		public RuleCall getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0; }
+	}
+
+	public class SignedNumberElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SignedNumber");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		////SignedNumber returns ecore::EDouble:
+		////	'-'? Number;
+		//SignedNumber returns ecore::EInt:
+		//	("-"? INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//("-"? INT)?
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
+	}
+
+	public class ChartQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartQualifiedNameWithWildCard");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cQualifiedNameParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final Keyword cAsteriskKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		
+		//ChartQualifiedNameWithWildCard:
+		//	QualifiedName ("." "*")?;
+		public ParserRule getRule() { return rule; }
+
+		//QualifiedName ("." "*")?
+		public Group getGroup() { return cGroup; }
+
+		//QualifiedName
+		public RuleCall getQualifiedNameParserRuleCall_0() { return cQualifiedNameParserRuleCall_0; }
+
+		//("." "*")?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//"*"
+		public Keyword getAsteriskKeyword_1_1() { return cAsteriskKeyword_1_1; }
+	}
+
+	public class TRANSLATABLESTRINGElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLESTRING");
+		private final RuleCall cSTRINGTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TRANSLATABLESTRING:
+		//	STRING;
+		public ParserRule getRule() { return rule; }
+
+		//STRING
+		public RuleCall getSTRINGTerminalRuleCall() { return cSTRINGTerminalRuleCall; }
+	}
+
+	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLEID");
+		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TRANSLATABLEID:
+		//	ID;
+		public ParserRule getRule() { return rule; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+	}
+	
+	
+	public class LegendPlacementEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "LegendPlacementEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cINSIDEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cINSIDEInsideKeyword_0_0 = (Keyword)cINSIDEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cINSIDE_GRIDEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cINSIDE_GRIDInsideGridKeyword_1_0 = (Keyword)cINSIDE_GRIDEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cOUTSIDEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cOUTSIDEOutsideKeyword_2_0 = (Keyword)cOUTSIDEEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cOUTSIDE_GRIDEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cOUTSIDE_GRIDOutsideGridKeyword_3_0 = (Keyword)cOUTSIDE_GRIDEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum LegendPlacementEnum:
+		//	INSIDE="inside" | INSIDE_GRID="inside-grid" | OUTSIDE="outside" | OUTSIDE_GRID="outside-grid";
+		public EnumRule getRule() { return rule; }
+
+		//INSIDE="inside" | INSIDE_GRID="inside-grid" | OUTSIDE="outside" | OUTSIDE_GRID="outside-grid"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//INSIDE="inside"
+		public EnumLiteralDeclaration getINSIDEEnumLiteralDeclaration_0() { return cINSIDEEnumLiteralDeclaration_0; }
+
+		//"inside"
+		public Keyword getINSIDEInsideKeyword_0_0() { return cINSIDEInsideKeyword_0_0; }
+
+		//INSIDE_GRID="inside-grid"
+		public EnumLiteralDeclaration getINSIDE_GRIDEnumLiteralDeclaration_1() { return cINSIDE_GRIDEnumLiteralDeclaration_1; }
+
+		//"inside-grid"
+		public Keyword getINSIDE_GRIDInsideGridKeyword_1_0() { return cINSIDE_GRIDInsideGridKeyword_1_0; }
+
+		//OUTSIDE="outside"
+		public EnumLiteralDeclaration getOUTSIDEEnumLiteralDeclaration_2() { return cOUTSIDEEnumLiteralDeclaration_2; }
+
+		//"outside"
+		public Keyword getOUTSIDEOutsideKeyword_2_0() { return cOUTSIDEOutsideKeyword_2_0; }
+
+		//OUTSIDE_GRID="outside-grid"
+		public EnumLiteralDeclaration getOUTSIDE_GRIDEnumLiteralDeclaration_3() { return cOUTSIDE_GRIDEnumLiteralDeclaration_3; }
+
+		//"outside-grid"
+		public Keyword getOUTSIDE_GRIDOutsideGridKeyword_3_0() { return cOUTSIDE_GRIDOutsideGridKeyword_3_0; }
+	}
+
+	public class ToggleTypeEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ToggleTypeEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cNORMALEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cNORMALNormalKeyword_0_0 = (Keyword)cNORMALEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cSLOWEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cSLOWSlowKeyword_1_0 = (Keyword)cSLOWEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cFASTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cFASTFastKeyword_2_0 = (Keyword)cFASTEnumLiteralDeclaration_2.eContents().get(0);
+		
+		//enum ToggleTypeEnum:
+		//	NORMAL="normal" | SLOW="slow" | FAST="fast";
+		public EnumRule getRule() { return rule; }
+
+		//NORMAL="normal" | SLOW="slow" | FAST="fast"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//NORMAL="normal"
+		public EnumLiteralDeclaration getNORMALEnumLiteralDeclaration_0() { return cNORMALEnumLiteralDeclaration_0; }
+
+		//"normal"
+		public Keyword getNORMALNormalKeyword_0_0() { return cNORMALNormalKeyword_0_0; }
+
+		//SLOW="slow"
+		public EnumLiteralDeclaration getSLOWEnumLiteralDeclaration_1() { return cSLOWEnumLiteralDeclaration_1; }
+
+		//"slow"
+		public Keyword getSLOWSlowKeyword_1_0() { return cSLOWSlowKeyword_1_0; }
+
+		//FAST="fast"
+		public EnumLiteralDeclaration getFASTEnumLiteralDeclaration_2() { return cFASTEnumLiteralDeclaration_2; }
+
+		//"fast"
+		public Keyword getFASTFastKeyword_2_0() { return cFASTFastKeyword_2_0; }
+	}
+
+	public class TooltipLocationEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "TooltipLocationEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cNORTHEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cNORTHNorthKeyword_0_0 = (Keyword)cNORTHEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cNORTH_EASTEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cNORTH_EASTNorthEastKeyword_1_0 = (Keyword)cNORTH_EASTEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cEASTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cEASTEastKeyword_2_0 = (Keyword)cEASTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cSOUTH_EASTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cSOUTH_EASTSouthEastKeyword_3_0 = (Keyword)cSOUTH_EASTEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cSOUTHEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cSOUTHSouthKeyword_4_0 = (Keyword)cSOUTHEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cSOUTH_WESTEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cSOUTH_WESTSouthWestKeyword_5_0 = (Keyword)cSOUTH_WESTEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cWESTEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cWESTWestKeyword_6_0 = (Keyword)cWESTEnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cNORTH_WESTEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cNORTH_WESTNorthWestKeyword_7_0 = (Keyword)cNORTH_WESTEnumLiteralDeclaration_7.eContents().get(0);
+		
+		//enum TooltipLocationEnum:
+		//	NORTH="north" | NORTH_EAST="north-east" | EAST="east" | SOUTH_EAST="south-east" | SOUTH="south" |
+		//	SOUTH_WEST="south-west" | WEST="west" | NORTH_WEST="north-west";
+		public EnumRule getRule() { return rule; }
+
+		//NORTH="north" | NORTH_EAST="north-east" | EAST="east" | SOUTH_EAST="south-east" | SOUTH="south" |
+		//SOUTH_WEST="south-west" | WEST="west" | NORTH_WEST="north-west"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//NORTH="north"
+		public EnumLiteralDeclaration getNORTHEnumLiteralDeclaration_0() { return cNORTHEnumLiteralDeclaration_0; }
+
+		//"north"
+		public Keyword getNORTHNorthKeyword_0_0() { return cNORTHNorthKeyword_0_0; }
+
+		//NORTH_EAST="north-east"
+		public EnumLiteralDeclaration getNORTH_EASTEnumLiteralDeclaration_1() { return cNORTH_EASTEnumLiteralDeclaration_1; }
+
+		//"north-east"
+		public Keyword getNORTH_EASTNorthEastKeyword_1_0() { return cNORTH_EASTNorthEastKeyword_1_0; }
+
+		//EAST="east"
+		public EnumLiteralDeclaration getEASTEnumLiteralDeclaration_2() { return cEASTEnumLiteralDeclaration_2; }
+
+		//"east"
+		public Keyword getEASTEastKeyword_2_0() { return cEASTEastKeyword_2_0; }
+
+		//SOUTH_EAST="south-east"
+		public EnumLiteralDeclaration getSOUTH_EASTEnumLiteralDeclaration_3() { return cSOUTH_EASTEnumLiteralDeclaration_3; }
+
+		//"south-east"
+		public Keyword getSOUTH_EASTSouthEastKeyword_3_0() { return cSOUTH_EASTSouthEastKeyword_3_0; }
+
+		//SOUTH="south"
+		public EnumLiteralDeclaration getSOUTHEnumLiteralDeclaration_4() { return cSOUTHEnumLiteralDeclaration_4; }
+
+		//"south"
+		public Keyword getSOUTHSouthKeyword_4_0() { return cSOUTHSouthKeyword_4_0; }
+
+		//SOUTH_WEST="south-west"
+		public EnumLiteralDeclaration getSOUTH_WESTEnumLiteralDeclaration_5() { return cSOUTH_WESTEnumLiteralDeclaration_5; }
+
+		//"south-west"
+		public Keyword getSOUTH_WESTSouthWestKeyword_5_0() { return cSOUTH_WESTSouthWestKeyword_5_0; }
+
+		//WEST="west"
+		public EnumLiteralDeclaration getWESTEnumLiteralDeclaration_6() { return cWESTEnumLiteralDeclaration_6; }
+
+		//"west"
+		public Keyword getWESTWestKeyword_6_0() { return cWESTWestKeyword_6_0; }
+
+		//NORTH_WEST="north-west"
+		public EnumLiteralDeclaration getNORTH_WESTEnumLiteralDeclaration_7() { return cNORTH_WESTEnumLiteralDeclaration_7; }
+
+		//"north-west"
+		public Keyword getNORTH_WESTNorthWestKeyword_7_0() { return cNORTH_WESTNorthWestKeyword_7_0; }
+	}
+
+	public class RenderTypeEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "RenderTypeEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cCATEGORYEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cCATEGORYCategoryKeyword_0_0 = (Keyword)cCATEGORYEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cLINEAREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cLINEARLinearKeyword_1_0 = (Keyword)cLINEAREnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cDATEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cDATEDateKeyword_2_0 = (Keyword)cDATEEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cLOGEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cLOGLogarithmicKeyword_3_0 = (Keyword)cLOGEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cPYRAMIDEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cPYRAMIDPyramidKeyword_4_0 = (Keyword)cPYRAMIDEnumLiteralDeclaration_4.eContents().get(0);
+		
+		//enum RenderTypeEnum:
+		//	CATEGORY="category" | LINEAR="linear" | DATE="date" | LOG="logarithmic" | PYRAMID="pyramid";
+		public EnumRule getRule() { return rule; }
+
+		//CATEGORY="category" | LINEAR="linear" | DATE="date" | LOG="logarithmic" | PYRAMID="pyramid"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//CATEGORY="category"
+		public EnumLiteralDeclaration getCATEGORYEnumLiteralDeclaration_0() { return cCATEGORYEnumLiteralDeclaration_0; }
+
+		//"category"
+		public Keyword getCATEGORYCategoryKeyword_0_0() { return cCATEGORYCategoryKeyword_0_0; }
+
+		//LINEAR="linear"
+		public EnumLiteralDeclaration getLINEAREnumLiteralDeclaration_1() { return cLINEAREnumLiteralDeclaration_1; }
+
+		//"linear"
+		public Keyword getLINEARLinearKeyword_1_0() { return cLINEARLinearKeyword_1_0; }
+
+		//DATE="date"
+		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_2() { return cDATEEnumLiteralDeclaration_2; }
+
+		//"date"
+		public Keyword getDATEDateKeyword_2_0() { return cDATEDateKeyword_2_0; }
+
+		//LOG="logarithmic"
+		public EnumLiteralDeclaration getLOGEnumLiteralDeclaration_3() { return cLOGEnumLiteralDeclaration_3; }
+
+		//"logarithmic"
+		public Keyword getLOGLogarithmicKeyword_3_0() { return cLOGLogarithmicKeyword_3_0; }
+
+		//PYRAMID="pyramid"
+		public EnumLiteralDeclaration getPYRAMIDEnumLiteralDeclaration_4() { return cPYRAMIDEnumLiteralDeclaration_4; }
+
+		//"pyramid"
+		public Keyword getPYRAMIDPyramidKeyword_4_0() { return cPYRAMIDPyramidKeyword_4_0; }
+	}
+	
+	private final ChartModelElements pChartModel;
+	private final ChartPackageElements pChartPackage;
+	private final ChartElements pChart;
+	private final ChartOptionElements pChartOption;
+	private final ChartBarElements pChartBar;
+	private final ChartLineElements pChartLine;
+	private final ChartPieElements pChartPie;
+	private final ChartDonutElements pChartDonut;
+	private final ChartBubbleElements pChartBubble;
+	private final ChartGaugeElements pChartGauge;
+	private final ChartTreeElements pChartTree;
+	private final ChartIntervalElements pChartInterval;
+	private final ChartNumberIntervalElements pChartNumberInterval;
+	private final ChartDatamartElements pChartDatamart;
+	private final ChartElementElements pChartElement;
+	private final ChartLegendElements pChartLegend;
+	private final ChartHighlighterElements pChartHighlighter;
+	private final ChartAxisElements pChartAxis;
+	private final ChartRangeElementElements pChartRangeElement;
+	private final ChartSegmentColorElements pChartSegmentColor;
+	private final ChartImportElements pChartImport;
+	private final SignedNumberElements pSignedNumber;
+	private final ChartQualifiedNameWithWildCardElements pChartQualifiedNameWithWildCard;
+	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
+	private final TRANSLATABLEIDElements pTRANSLATABLEID;
+	private final LegendPlacementEnumElements unknownRuleLegendPlacementEnum;
+	private final ToggleTypeEnumElements unknownRuleToggleTypeEnum;
+	private final TooltipLocationEnumElements unknownRuleTooltipLocationEnum;
+	private final RenderTypeEnumElements unknownRuleRenderTypeEnum;
+	
+	private final Grammar grammar;
+
+	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+
+	@Inject
+	public ChartDSLGrammarAccess(GrammarProvider grammarProvider,
+		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.pChartModel = new ChartModelElements();
+		this.pChartPackage = new ChartPackageElements();
+		this.pChart = new ChartElements();
+		this.pChartOption = new ChartOptionElements();
+		this.pChartBar = new ChartBarElements();
+		this.pChartLine = new ChartLineElements();
+		this.pChartPie = new ChartPieElements();
+		this.pChartDonut = new ChartDonutElements();
+		this.pChartBubble = new ChartBubbleElements();
+		this.pChartGauge = new ChartGaugeElements();
+		this.pChartTree = new ChartTreeElements();
+		this.pChartInterval = new ChartIntervalElements();
+		this.pChartNumberInterval = new ChartNumberIntervalElements();
+		this.pChartDatamart = new ChartDatamartElements();
+		this.pChartElement = new ChartElementElements();
+		this.pChartLegend = new ChartLegendElements();
+		this.pChartHighlighter = new ChartHighlighterElements();
+		this.pChartAxis = new ChartAxisElements();
+		this.pChartRangeElement = new ChartRangeElementElements();
+		this.pChartSegmentColor = new ChartSegmentColorElements();
+		this.pChartImport = new ChartImportElements();
+		this.pSignedNumber = new SignedNumberElements();
+		this.pChartQualifiedNameWithWildCard = new ChartQualifiedNameWithWildCardElements();
+		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
+		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
+		this.unknownRuleLegendPlacementEnum = new LegendPlacementEnumElements();
+		this.unknownRuleToggleTypeEnum = new ToggleTypeEnumElements();
+		this.unknownRuleTooltipLocationEnum = new TooltipLocationEnumElements();
+		this.unknownRuleRenderTypeEnum = new RenderTypeEnumElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.xtext.chart.ChartDSL".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;
+	}
+
+	
+	//ChartModel:
+	//	packages+=ChartPackage*;
+	public ChartModelElements getChartModelAccess() {
+		return pChartModel;
+	}
+	
+	public ParserRule getChartModelRule() {
+		return getChartModelAccess().getRule();
+	}
+
+	//ChartPackage:
+	//	{ChartPackage} "package" name=QualifiedName ("{" imports+=ChartImport* charts+=Chart* "}")?;
+	public ChartPackageElements getChartPackageAccess() {
+		return pChartPackage;
+	}
+	
+	public ParserRule getChartPackageRule() {
+		return getChartPackageAccess().getRule();
+	}
+
+	//Chart:
+	//	{Chart} "chart" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? "as"
+	//	charttype=ChartOption (polling?="polling" pollingTime=INT)? ("using" source=ChartDatamart)?;
+	public ChartElements getChartAccess() {
+		return pChart;
+	}
+	
+	public ParserRule getChartRule() {
+		return getChartAccess().getRule();
+	}
+
+	//ChartOption:
+	//	ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree;
+	public ChartOptionElements getChartOptionAccess() {
+		return pChartOption;
+	}
+	
+	public ParserRule getChartOptionRule() {
+		return getChartOptionAccess().getRule();
+	}
+
+	//ChartBar:
+	//	{ChartBar} "bar" (shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?);
+	public ChartBarElements getChartBarAccess() {
+		return pChartBar;
+	}
+	
+	public ParserRule getChartBarRule() {
+		return getChartBarAccess().getRule();
+	}
+
+	//ChartLine:
+	//	{ChartLine} "line" (animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor"
+	//	zoom?="zoom"? tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?);
+	public ChartLineElements getChartLineAccess() {
+		return pChartLine;
+	}
+	
+	public ParserRule getChartLineRule() {
+		return getChartLineAccess().getRule();
+	}
+
+	//ChartPie:
+	//	{ChartPie} "pie" empty?="empty"?;
+	public ChartPieElements getChartPieAccess() {
+		return pChartPie;
+	}
+	
+	public ParserRule getChartPieRule() {
+		return getChartPieAccess().getRule();
+	}
+
+	//ChartDonut:
+	//	{ChartDonut} "donut";
+	public ChartDonutElements getChartDonutAccess() {
+		return pChartDonut;
+	}
+	
+	public ParserRule getChartDonutRule() {
+		return getChartDonutAccess().getRule();
+	}
+
+	//ChartBubble:
+	//	{ChartBubble} "bubble" ((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" |
+	//	transparent?="transparent"))?;
+	public ChartBubbleElements getChartBubbleAccess() {
+		return pChartBubble;
+	}
+	
+	public ParserRule getChartBubbleRule() {
+		return getChartBubbleAccess().getRule();
+	}
+
+	//ChartGauge:
+	//	{ChartGauge} "gauge" ((labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum"
+	//	maxValue=INT)? & (hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?);
+	public ChartGaugeElements getChartGaugeAccess() {
+		return pChartGauge;
+	}
+	
+	public ParserRule getChartGaugeRule() {
+		return getChartGaugeAccess().getRule();
+	}
+
+	//ChartTree:
+	//	{ChartTree} "tree" (map?="map" | collapsible?="collapsible");
+	public ChartTreeElements getChartTreeAccess() {
+		return pChartTree;
+	}
+	
+	public ParserRule getChartTreeRule() {
+		return getChartTreeAccess().getRule();
+	}
+
+	//ChartInterval:
+	//	ChartNumberInterval;
+	public ChartIntervalElements getChartIntervalAccess() {
+		return pChartInterval;
+	}
+	
+	public ParserRule getChartIntervalRule() {
+		return getChartIntervalAccess().getRule();
+	}
+
+	//ChartNumberInterval:
+	//	{ChartNumberInterval} "up to" numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
+	public ChartNumberIntervalElements getChartNumberIntervalAccess() {
+		return pChartNumberInterval;
+	}
+	
+	public ParserRule getChartNumberIntervalRule() {
+		return getChartNumberIntervalAccess().getRule();
+	}
+
+	//ChartDatamart:
+	//	"datamart" datamartRef=[datamart::DatamartDefinition] "{" elements+=ChartElement* "}";
+	public ChartDatamartElements getChartDatamartAccess() {
+		return pChartDatamart;
+	}
+	
+	public ParserRule getChartDatamartRule() {
+		return getChartDatamartAccess().getRule();
+	}
+
+	//ChartElement:
+	//	ChartAxis | ChartLegend | ChartHighlighter;
+	public ChartElementElements getChartElementAccess() {
+		return pChartElement;
+	}
+	
+	public ParserRule getChartElementRule() {
+		return getChartElementAccess().getRule();
+	}
+
+	//ChartLegend:
+	//	"legend" placement=LegendPlacementEnum (toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?;
+	public ChartLegendElements getChartLegendAccess() {
+		return pChartLegend;
+	}
+	
+	public ParserRule getChartLegendRule() {
+		return getChartLegendAccess().getRule();
+	}
+
+	//ChartHighlighter:
+	//	"tooltip" location=TooltipLocationEnum (tooltipAlways?="always"? insideChart?="inside"?);
+	public ChartHighlighterElements getChartHighlighterAccess() {
+		return pChartHighlighter;
+	}
+	
+	public ParserRule getChartHighlighterRule() {
+		return getChartHighlighterAccess().getRule();
+	}
+
+	//ChartAxis:
+	//	"axis" axis=[datamart::DatamartAxis] "renders" renderType=RenderTypeEnum shortLabel?="shortLabel"? ("tickangle"
+	//	angle=SignedNumber)?;
+	public ChartAxisElements getChartAxisAccess() {
+		return pChartAxis;
+	}
+	
+	public ParserRule getChartAxisRule() {
+		return getChartAxisAccess().getRule();
+	}
+
+	//ChartRangeElement:
+	//	ChartSegmentColor;
+	public ChartRangeElementElements getChartRangeElementAccess() {
+		return pChartRangeElement;
+	}
+	
+	public ParserRule getChartRangeElementRule() {
+		return getChartRangeElementAccess().getRule();
+	}
+
+	//ChartSegmentColor:
+	//	"segmentcolor" rgb=STRING;
+	public ChartSegmentColorElements getChartSegmentColorAccess() {
+		return pChartSegmentColor;
+	}
+	
+	public ParserRule getChartSegmentColorRule() {
+		return getChartSegmentColorAccess().getRule();
+	}
+
+	//ChartImport returns types::LImport:
+	//	"import" importedNamespace=ChartQualifiedNameWithWildCard;
+	public ChartImportElements getChartImportAccess() {
+		return pChartImport;
+	}
+	
+	public ParserRule getChartImportRule() {
+		return getChartImportAccess().getRule();
+	}
+
+	////SignedNumber returns ecore::EDouble:
+	////	'-'? Number;
+	//SignedNumber returns ecore::EInt:
+	//	("-"? INT)?;
+	public SignedNumberElements getSignedNumberAccess() {
+		return pSignedNumber;
+	}
+	
+	public ParserRule getSignedNumberRule() {
+		return getSignedNumberAccess().getRule();
+	}
+
+	//ChartQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public ChartQualifiedNameWithWildCardElements getChartQualifiedNameWithWildCardAccess() {
+		return pChartQualifiedNameWithWildCard;
+	}
+	
+	public ParserRule getChartQualifiedNameWithWildCardRule() {
+		return getChartQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//TRANSLATABLESTRING:
+	//	STRING;
+	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
+		return pTRANSLATABLESTRING;
+	}
+	
+	public ParserRule getTRANSLATABLESTRINGRule() {
+		return getTRANSLATABLESTRINGAccess().getRule();
+	}
+
+	//TRANSLATABLEID:
+	//	ID;
+	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
+		return pTRANSLATABLEID;
+	}
+	
+	public ParserRule getTRANSLATABLEIDRule() {
+		return getTRANSLATABLEIDAccess().getRule();
+	}
+
+	//enum LegendPlacementEnum:
+	//	INSIDE="inside" | INSIDE_GRID="inside-grid" | OUTSIDE="outside" | OUTSIDE_GRID="outside-grid";
+	public LegendPlacementEnumElements getLegendPlacementEnumAccess() {
+		return unknownRuleLegendPlacementEnum;
+	}
+	
+	public EnumRule getLegendPlacementEnumRule() {
+		return getLegendPlacementEnumAccess().getRule();
+	}
+
+	//enum ToggleTypeEnum:
+	//	NORMAL="normal" | SLOW="slow" | FAST="fast";
+	public ToggleTypeEnumElements getToggleTypeEnumAccess() {
+		return unknownRuleToggleTypeEnum;
+	}
+	
+	public EnumRule getToggleTypeEnumRule() {
+		return getToggleTypeEnumAccess().getRule();
+	}
+
+	//enum TooltipLocationEnum:
+	//	NORTH="north" | NORTH_EAST="north-east" | EAST="east" | SOUTH_EAST="south-east" | SOUTH="south" |
+	//	SOUTH_WEST="south-west" | WEST="west" | NORTH_WEST="north-west";
+	public TooltipLocationEnumElements getTooltipLocationEnumAccess() {
+		return unknownRuleTooltipLocationEnum;
+	}
+	
+	public EnumRule getTooltipLocationEnumRule() {
+		return getTooltipLocationEnumAccess().getRule();
+	}
+
+	//enum RenderTypeEnum:
+	//	CATEGORY="category" | LINEAR="linear" | DATE="date" | LOG="logarithmic" | PYRAMID="pyramid";
+	public RenderTypeEnumElements getRenderTypeEnumAccess() {
+		return unknownRuleRenderTypeEnum;
+	}
+	
+	public EnumRule getRenderTypeEnumRule() {
+		return getRenderTypeEnumAccess().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.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java
new file mode 100644
index 0000000..392358e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java
@@ -0,0 +1,33 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.chart.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractChartDSLValidator 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/chart/ChartDSL"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/dsl/common/types/v1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/Xtext/Xbase/XAnnotations"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/Activator.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/Activator.java
new file mode 100644
index 0000000..d506a13
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/Activator.java
@@ -0,0 +1,56 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.chart;
+
+
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class Activator.
+ */
+public class Activator implements BundleActivator {
+
+	/** The context. */
+	private static BundleContext context;
+
+	/**
+	 * Gets the context.
+	 *
+	 * @return the 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.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext
new file mode 100644
index 0000000..b1de8c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext
@@ -0,0 +1,112 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+grammar org.eclipse.osbp.xtext.chart.ChartDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+
+import "http://osbp.eclipse.org/xtext/chart/ChartDSL" 
+
+import "http://osbp.eclipse.org/xtext/datamartdsl/DatamartDSL" as datamart
+import "http://osbp.eclipse.org/xtext/cubedsl/CubeDSL" as cube
+import "http://osbp.eclipse.org/dsl/common/types/v1" as types
+import "http://osbp.eclipse.org/dsl/entity/v1" as entity
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+
+ChartModel:
+	packages+=ChartPackage*;
+
+ChartPackage:
+	{ChartPackage} 'package' name=QualifiedName ('{' (imports+=ChartImport)* (charts+=Chart)* '}' )?;
+
+Chart:
+	{Chart} 'chart' name=TRANSLATABLEID (description?='described by' descriptionValue=TRANSLATABLESTRING)? 'as' charttype=ChartOption (polling?='polling' pollingTime=INT)? ('using' source=ChartDatamart)?;
+
+ChartOption:
+	ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree;
+
+ChartBar:
+	{ChartBar} 'bar' ((shadow?='shaded')? & (animated?='animated')? & (swapped?='swapped')? & (stacked?='stacked')?);
+
+ChartLine:
+	{ChartLine} 'line' ((animated?='animated')? & (showMarker?='showMarker')? & (trendLine?='trendLine')? & (cursor?='cursor' (zoom?='zoom')? (tooltip?='tooltip')?)? & (fillToZero?='fillZero')? & (fillArea?='filled')?);
+
+ChartPie:
+	{ChartPie} 'pie' (empty?='empty')?;
+
+ChartDonut:
+	{ChartDonut} 'donut';
+
+ChartBubble:
+	{ChartBubble} 'bubble' ((multiplier?='multiplier' multiplierValue=Number)? & ((gradient?='gradient') | (transparent?='transparent')))?;
+
+ChartGauge:
+	{ChartGauge} 'gauge' ((labeled?='label' labelValue=STRING)? & (hasTicks?='hasTicks' 'minimum' minValue=INT 'maximum' maxValue=INT)? & (hasIntervals?='intervals' '{' (intervals+=ChartInterval)* '}')?);
+	
+ChartTree:
+	{ChartTree} 'tree' ((map?='map') | (collapsible?='collapsible'));
+
+ChartInterval:
+	ChartNumberInterval;
+	
+ChartNumberInterval:
+	{ChartNumberInterval} 'up to' numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
+	
+ChartDatamart:
+	'datamart' datamartRef=[datamart::DatamartDefinition] '{' elements+=ChartElement* '}';
+
+ChartElement:
+	ChartAxis | ChartLegend | ChartHighlighter;
+	
+ChartLegend:
+	'legend' placement=LegendPlacementEnum (toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?;
+	
+ChartHighlighter:
+	'tooltip' location=TooltipLocationEnum ((tooltipAlways?='always')? (insideChart?='inside')?);
+	
+ChartAxis:
+	'axis' axis=[datamart::DatamartAxis] 'renders' renderType=RenderTypeEnum (shortLabel?='shortLabel')? ('tickangle' angle=SignedNumber)?;
+	
+ChartRangeElement:
+	ChartSegmentColor;
+	
+ChartSegmentColor: 
+	'segmentcolor' rgb=STRING;
+
+ChartImport returns types::LImport:
+	'import' importedNamespace=ChartQualifiedNameWithWildCard;
+	
+//SignedNumber returns ecore::EDouble:
+//	'-'? Number;
+SignedNumber returns ecore::EInt:
+	('-'? INT)?;
+
+	
+ChartQualifiedNameWithWildCard:
+	QualifiedName ('.' '*')?;
+
+TRANSLATABLESTRING: STRING;	
+
+TRANSLATABLEID:
+	ID;
+
+enum LegendPlacementEnum:
+	 INSIDE='inside' | INSIDE_GRID='inside-grid' | OUTSIDE='outside' | OUTSIDE_GRID='outside-grid';
+
+enum ToggleTypeEnum:
+	NORMAL='normal' | SLOW='slow' | FAST='fast';
+	
+enum TooltipLocationEnum:
+	NORTH='north' | NORTH_EAST='north-east' | EAST='east' | SOUTH_EAST='south-east' | SOUTH='south' | SOUTH_WEST='south-west' | WEST='west' | NORTH_WEST='north-west';
+	
+enum RenderTypeEnum:
+	CATEGORY='category' | LINEAR='linear' | DATE='date' | LOG='logarithmic' |PYRAMID='pyramid';
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..8e056c1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLBundleSpaceRuntimeModule.java
@@ -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 
+ */
+package org.eclipse.osbp.xtext.chart;
+
+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;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ChartDSLBundleSpaceRuntimeModule.
+ */
+@SuppressWarnings("restriction")
+public class ChartDSLBundleSpaceRuntimeModule extends ChartDSLRuntimeModule {
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIJvmTypeProvider$Factory()
+	 */
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindAbstractTypeScopeProvider()
+	 */
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+	/**
+	 * Bind I type loader factory.
+	 *
+	 * @return the class<? extends I type loader factory>
+	 */
+	public Class<? extends ITypeLoaderFactory> bindITypeLoaderFactory() {
+		return TypeLoaderFactory.class;
+	}
+
+	/**
+	 * I type loader provider.
+	 *
+	 * @return the class<? extends I type loader provider>
+	 */
+	public Class<? extends ITypeLoaderProvider> ITypeLoaderProvider() {
+		return TypeLoaderProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..117a872
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLBundleSpaceStandaloneSetup.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.chart;
+
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ChartDSLBundleSpaceStandaloneSetup.
+ */
+@SuppressWarnings("restriction")
+public class ChartDSLBundleSpaceStandaloneSetup extends ChartDSLStandaloneSetup {
+	
+	/**
+	 * Do setup.
+	 */
+	public static void doSetup() {
+		new ChartDSLBundleSpaceStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLStandaloneSetupGenerated#createInjectorAndDoEMFRegistration()
+	 */
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLStandaloneSetupGenerated#createInjector()
+	 */
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(new ChartDSLBundleSpaceRuntimeModule());
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java
new file mode 100644
index 0000000..aba5f20
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java
@@ -0,0 +1,104 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart;
+
+import javax.inject.Singleton;
+
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+
+import com.google.inject.Binder;
+
+import org.eclipse.osbp.xtext.chart.jvmmodel.ChartModelGenerator;
+import org.eclipse.osbp.xtext.chart.scoping.ChartScopeProvider;
+import org.eclipse.osbp.xtext.chart.valueconverter.ChartQualifiedNameProvider;
+import org.eclipse.osbp.xtext.chart.valueconverter.ChartValueConverterService;
+import org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class ChartDSLRuntimeModule extends org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule {
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIGenerator()
+	 */
+	@Override
+	public Class<? extends IGenerator> bindIGenerator() {
+	    return ChartModelGenerator.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIScopeProvider()
+	 */
+	public Class<? extends IScopeProvider> bindIScopeProvider() {
+		return ChartScopeProvider.class;
+	}
+	
+	/**
+	 * Only required, if fqn can not be created by appending the names of the
+	 * semantic elements up the hierarchy.
+	 *
+	 * @return the class<? extends org.eclipse.xtext.naming. I qualified name provider>
+	 */
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return ChartQualifiedNameProvider.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIValueConverterService()
+	 */
+	@Override
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return ChartValueConverterService.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#configure(com.google.inject.Binder)
+	 */
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(IOutputConfigurationProvider.class).to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindXtextResource()
+	 */
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindILinker()
+	 */
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return LazyJvmTypeLinker.class;
+	}
+
+	/**
+	 * Bind serializer I transient value service.
+	 *
+	 * @return the class<? extends org.eclipse.xtext.serializer.sequencer. I transient value service>
+	 */
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return LazyJvmTypeTransientValueService.class;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetup.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetup.java
new file mode 100644
index 0000000..5bb98fd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetup.java
@@ -0,0 +1,30 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.chart;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry.
+ */
+public class ChartDSLStandaloneSetup extends ChartDSLStandaloneSetupGenerated{
+
+	/**
+	 * Do setup.
+	 */
+	public static void doSetup() {
+		new ChartDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2 b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2
new file mode 100644
index 0000000..a7129bc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2
@@ -0,0 +1,171 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.GenerateChartDSL
+
+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.chart"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext"
+var fileExtensions = "chart"
+var runtimeProject = "../${projectName}"
+var generateXtendStub = true
+var encoding = "UTF-8"
+
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+    bean = MavenStandaloneSetup {
+    	scanClassPath = true
+    	platformUri = "${runtimeProject}/.."
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore"
+//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.chart.ChartDSLPackage"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore"
+//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore"
+//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.ecore"
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}/src-gen"
+    	exclude = "README.txt"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}.ui/src-gen"
+    	exclude = "README.txt"
+    }
+    
+    component = 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"
+    		}
+    
+    		// 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 {}
+    
+    		// project wizard (optional)
+    		// fragment = projectWizard.SimpleProjectWizardFragment auto-inject {
+    		//      generatorProjectName = "${projectName}"
+    		// }
+    
+    		// 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.chart/src/org/eclipse/osbp/xtext/chart/XcoreResourceFactory.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/XcoreResourceFactory.java
new file mode 100644
index 0000000..e505391
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/XcoreResourceFactory.java
@@ -0,0 +1,35 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.chart;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xcore.resource.XcoreResource;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A factory for creating XcoreResource objects.
+ */
+public class XcoreResourceFactory implements Resource.Factory {
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.ecore.resource.Resource.Factory#createResource(org.eclipse.emf.common.util.URI)
+	 */
+	@Override
+	public Resource createResource(URI uri) {
+		XcoreResource resource = new XcoreResource();
+		resource.setURI(uri);
+		return resource;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend
new file mode 100644
index 0000000..6065f1d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend
@@ -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
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.chart.formatting
+
+import com.google.inject.Inject;
+import org.eclipse.osbp.utils.xtext.GenericFormatter
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
+import org.eclipse.xtext.formatting.impl.FormattingConfig
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
+import org.eclipse.xtext.Grammar
+
+//import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess
+
+/**
+ * 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 ChartDSLFormatter extends AbstractDeclarativeFormatter {
+
+//	@Inject extension ChartDSLGrammarAccess
+	@Inject XtypeGrammarAccess grammarAccess
+
+	override protected void configureFormatting(FormattingConfig c) {
+		val genericFormatter = new GenericFormatter()
+ 
+		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "Chart", "ChartImport" )
+		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+	}
+}
+ 
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend
new file mode 100644
index 0000000..f024e14
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend
@@ -0,0 +1,151 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.jvmmodel
+
+import com.vaadin.annotations.JavaScript
+import com.vaadin.shared.ui.JavaScriptComponentState
+import com.vaadin.ui.AbstractJavaScriptComponent
+import org.eclipse.osbp.xtext.chart.Chart
+import org.eclipse.osbp.xtext.chart.ChartTree
+import java.util.ArrayList
+import java.util.List
+import javax.inject.Inject
+import org.eclipse.xtext.common.types.JvmAnnotationReference
+import org.eclipse.xtext.common.types.JvmConstructor
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmStringAnnotationValue
+import org.eclipse.xtext.common.types.JvmVisibility
+import org.eclipse.xtext.common.types.TypesFactory
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.utils.constants.GeneratorConstants
+
+class ChartDSLD3JavaComponentsCreator {
+		
+		@Inject extension JvmTypesBuilder
+		@Inject extension D3JsJavaUtil
+		@Inject
+		private TypesFactory typesFactory
+		
+		
+		def void createJsJavaComponent(Chart chart, IJvmDeclaredTypeAcceptor acceptor){
+			val stateClassName = chart.createStateFilename
+			var chart_cls = chart.toClass(chart.createfullyQualifiedChartFilename)
+			chart_cls.documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+			// JavaScript-Java-State-Component creation
+			var state_cls = chart.toClass(chart.createfullyQualifiedStateFilename)
+			state_cls.documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+			if (chart.charttype instanceof ChartTree){
+				val ChartTree chartTree = chart.charttype as ChartTree
+				// JavaScript-Java-Component creation
+		   		acceptor.accept(chart_cls)
+		   			.initializeLater([
+		   				superTypes += chart.newTypeRef(typeof(AbstractJavaScriptComponent))
+						var JvmAnnotationReference jsAnnotationRef = chartTree.toAnnotation(typeof(JavaScript))
+						var jsAnnotationList = newArrayList("d3.min.js", chart.createChartJsFilename)
+						jsAnnotationRef.addStringValuesToAnnotation(jsAnnotationList)
+						annotations += jsAnnotationRef
+						if (chartTree.map){
+		   					it.toTreeMapConstructor(chart)
+						} else if (chartTree.collapsible) {
+		   					it.toChartConstructor(chart)
+						}
+						it.toChartOperations(chart, stateClassName)
+		   			])
+				// JavaScript-Java-State-Component creation
+		   		acceptor.accept(state_cls)
+		   			.initializeLater([
+		   				superTypes += chart.newTypeRef(typeof(JavaScriptComponentState))
+						if (chartTree.map){
+							it.toTreeMapStateFields(chart)
+						} else if (chartTree.collapsible) {
+		   					it.toChartStateFields(chart)
+						}
+		   			])
+			}
+		}
+	
+	
+	def void toChartOperations(JvmDeclaredType type, Chart chart, String stateClassName){
+		// create view
+   		type.members += chart.toMethod("getState", chart.newTypeRef(stateClassName), [
+   			body = [ append('''return («stateClassName») super.getState();''')]
+   		])
+		
+	}
+
+	def getD3StateVars()
+		'''
+		getState().jsonData = _jsonData;
+		getState().htmlTagId=_htmlTagId;'''
+
+	def JvmConstructor getChartConstructor(JvmDeclaredType type, Chart chart) {
+		return chart.toConstructor([
+			parameters += chart.toParameter("_htmlTagId", chart.newTypeRef(typeof(String)))
+			parameters += chart.toParameter("_jsonData", chart.newTypeRef(typeof(String)))
+			body = [ append(getD3StateVars)]
+		])
+	}
+		
+	def void toTreeMapConstructor(JvmDeclaredType type, Chart chart) {
+		var JvmConstructor constructor = type.getChartConstructor(chart)
+		constructor.parameters += chart.toParameter("dataColumns", chart.newTypeRef(typeof(List), chart.newTypeRef(typeof(String))))
+		constructor.body = [ append(
+		'''
+		«d3StateVars»
+		getState().dataColumnList = dataColumns;''')]
+		type.members += constructor
+	}
+	
+	def void toChartConstructor(JvmDeclaredType type, Chart chart) {
+		var JvmConstructor constructor = type.getChartConstructor(chart)
+		type.members += constructor
+	}
+	
+	def void addStringValuesToAnnotation(JvmAnnotationReference annotationRef, ArrayList<String> annotationStringList){
+		var JvmStringAnnotationValue value = typesFactory.createJvmStringAnnotationValue
+		for (annotationString : annotationStringList){
+			value.values += annotationString
+		}
+		annotationRef.explicitValues += value
+	}
+		
+	def void toTreeMapStateFields(JvmDeclaredType type, Chart chart){
+		type.toChartStateFields(chart)
+		type.members += chart.toField("dataColumnList", chart.newTypeRef(List, chart.newTypeRef(String)))[
+			visibility = JvmVisibility::PUBLIC
+			setInitializer([append('''new ArrayList<String>()''')])]
+	}
+
+	def void toChartStateFields(JvmDeclaredType type, Chart chart){
+		type.members += chart.toField("jsonData", chart.newTypeRef(String))[
+			visibility = JvmVisibility::PUBLIC
+			setInitializer([append('''""''')])]
+		type.members += chart.toField("htmlTagId", chart.newTypeRef(String))[
+			visibility = JvmVisibility::PUBLIC
+			setInitializer([append('''""''')])]
+		type.members += chart.toField("inputValue", chart.newTypeRef(String))[
+			visibility = JvmVisibility::PUBLIC
+			setInitializer([append('''""''')])]
+	}
+
+	def createD3Chart(Chart chart)
+		'''
+		CellSetToD3JsonConverter jsonConverter = new CellSetToD3JsonConverter();
+		return new «val d3ChartFileName = chart.createChartFilename»«d3ChartFileName»("«d3ChartFileName»", jsonConverter.getD3JsonString(cxCellSet)«IF chart.treeMap», jsonConverter.getDataColumnNameList(cxCellSet)«ENDIF»);'''
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend
new file mode 100644
index 0000000..9ed0c34
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend
@@ -0,0 +1,1187 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms 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.chart.jvmmodel
+
+import com.github.wolfie.refresher.Refresher
+import com.vaadin.data.Property.ValueChangeListener
+import com.vaadin.ui.Component
+import com.vaadin.ui.VerticalLayout
+import elemental.json.JsonException
+import java.util.ArrayList
+import java.util.HashMap
+import java.util.Locale
+import javax.annotation.PostConstruct
+import javax.annotation.PreDestroy
+import javax.inject.Inject
+import org.dussan.vaadin.dcharts.DCharts
+import org.eclipse.e4.core.contexts.IEclipseContext
+import org.eclipse.e4.core.services.events.IEventBroker
+import org.eclipse.e4.ui.model.application.MApplication
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.osgi.hybrid.api.AbstractHybridVaaclipseView
+import org.eclipse.osbp.ui.api.datamart.DerivedOlapException
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService
+import org.eclipse.osbp.ui.api.user.IUser
+import org.eclipse.osbp.utils.constants.GeneratorConstants
+import org.eclipse.osbp.utils.theme.EnumCssClass
+import org.eclipse.osbp.utils.vaadin.PropertyLookup
+import org.eclipse.osbp.xtext.chart.Chart
+import org.eclipse.osbp.xtext.chart.ChartAxis
+import org.eclipse.osbp.xtext.chart.ChartBar
+import org.eclipse.osbp.xtext.chart.ChartBubble
+import org.eclipse.osbp.xtext.chart.ChartDatamart
+import org.eclipse.osbp.xtext.chart.ChartDonut
+import org.eclipse.osbp.xtext.chart.ChartGauge
+import org.eclipse.osbp.xtext.chart.ChartHighlighter
+import org.eclipse.osbp.xtext.chart.ChartLegend
+import org.eclipse.osbp.xtext.chart.ChartLine
+import org.eclipse.osbp.xtext.chart.ChartNumberInterval
+import org.eclipse.osbp.xtext.chart.ChartPackage
+import org.eclipse.osbp.xtext.chart.ChartPie
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor
+import org.eclipse.osbp.xtext.chart.ChartTree
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty
+import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmVisibility
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.osgi.service.event.EventHandler
+import org.slf4j.Logger
+import org.eclipse.osbp.ui.api.layout.IViewLayoutManager
+
+/**
+ * <p>
+ * This inferrer infers models of extension .chart and generates code to be used by a e4 application as view. Underlying components
+ * are from the vaadin component repository and especially the vaadin addon dChart.
+ * </p>
+ * 
+ * @author Joerg Riegel
+ */
+
+/**
+ * <p>Infers a JVM model from the source model.</p> 
+ *
+ * <p>The JVM model should contain all elements that would appear in the Java code 
+ * which is generated from the source model. Other models link against the JVM model rather than the source model.</p>     
+ */
+ class ChartDSLJvmModelInferrer extends AbstractModelInferrer {
+
+	@Inject extension JvmTypesBuilder
+	@Inject extension IQualifiedNameProvider
+	@Inject extension DatamartDSLJvmModelInferrer datamartInferrer
+	@Inject extension ChartDSLD3JavaComponentsCreator
+	
+	/**
+	 * <p>infer method dispatches the necessary routines to build fields, setter, getter, constructors and methods of the generated code.</p> 
+	 *
+	 */
+	def dispatch void infer(ChartPackage pckg, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
+		for (chart:pckg.charts) {
+			var cls = chart.toClass(pckg.fullyQualifiedName+"."+chart.name+"Chart")
+	        cls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractHybridVaaclipseView))
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(IUser.UserLocaleListener))
+	   		acceptor.accept(cls,
+	   			[
+				 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+	   				it.toFields(chart)
+	   				it.toConstructor(chart)
+					it.toGetterSetter(chart)
+					it.toOperations(chart)
+	   			])
+	   		if ((chart.charttype instanceof ChartTree)) {
+	   			chart.createJsJavaComponent(acceptor)
+	   		}
+		}
+   	}
+
+	/**
+	 * <p>build the constructors to be used by an e4 application.</p> 
+	 *
+	 */
+	def void toConstructor(JvmDeclaredType type, Chart chart) {
+		type.members += chart.toConstructor([
+			annotations += _annotationTypesBuilder.annotationRef(Inject)
+   			parameters += chart.toParameter("parent", _typeReferenceBuilder.typeRef(VerticalLayout))
+   			parameters += chart.toParameter("context", _typeReferenceBuilder.typeRef(IEclipseContext))
+   			parameters += chart.toParameter("app", _typeReferenceBuilder.typeRef(MApplication))
+			body = [ append('''super(parent,context,app);''')]
+		])
+	}
+	
+	/**
+	 * <p>build the class variables.</p> 
+	 *
+	 */
+	def void toFields(JvmDeclaredType type, Chart chart) {
+   		var JvmField field = null
+   		// create logger
+		field = chart.toField("log", _typeReferenceBuilder.typeRef(Logger))[setInitializer([append('''org.slf4j.LoggerFactory.getLogger("charts")''')])]
+   		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = chart.toField("user", _typeReferenceBuilder.typeRef(IUser)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
+		type.members += field
+		field = chart.toField("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
+		type.members += field
+		field = chart.toField("coordinateSystem", _typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(Integer)))
+		type.members += field
+		field = chart.toField("filterGenerator", _typeReferenceBuilder.typeRef(IDatamartFilterGenerator))
+		type.members += field
+		field = chart.toField("layoutManager", _typeReferenceBuilder.typeRef(IViewLayoutManager))
+		type.members += field
+		// the package name of the referenced datamart
+		if (getSourceDataMartRefName(chart) != null) {
+			var packageName = (chart.source.datamartRef.eContainer as DatamartPackage).fullyQualifiedName.toString
+			field = chart.toField("datamartClass", _typeReferenceBuilder.typeRef('''«packageName».«chart.source.datamartRef.name.toString»Datamart'''))
+			type.members += field
+		}
+		field = chart.toField("filterChangeListener", _typeReferenceBuilder.typeRef(ValueChangeListener))
+		type.members += field
+		field = chart.toField("chartRefresher", _typeReferenceBuilder.typeRef(Refresher))
+		type.members += field
+		field = chart.toField("chartRefresherDone", _typeReferenceBuilder.typeRef(boolean))
+		type.members += field
+		field = chart.toField("chartRenderDelay", _typeReferenceBuilder.typeRef(Refresher))
+		type.members += field
+		field = chart.toField("dataComponent", _typeReferenceBuilder.typeRef(Component))
+		type.members += field
+		field = chart.toField("propertyLookupMap", _typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(PropertyLookup)))
+		type.members += field
+		field = chart.toField("charts", _typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(DCharts)))
+		type.members += field
+		field = chart.toField("eventBroker", _typeReferenceBuilder.typeRef(IEventBroker)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
+		type.members += field
+		field = chart.toField("refreshView", _typeReferenceBuilder.typeRef(EventHandler))
+		type.members += field
+		field = chart.toField("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
+		type.members += field
+		field = chart.toField("locale", _typeReferenceBuilder.typeRef(Locale))
+		type.members += field
+	}
+
+	/**
+	 * <p>build the getters and setters from class variables.</p> 
+	 *
+	 */
+	def void toGetterSetter(JvmDeclaredType type, Chart chart) {
+  		var JvmOperation operation = null 
+  		operation = chart.toGetter("coordinateSystem", _typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(Integer)))
+  		operation.visibility = JvmVisibility::PUBLIC
+  		type.members += operation
+	}
+	
+	/**
+	 * <p>build the methods.</p> 
+	 *
+	 */
+	def void toOperations(JvmDeclaredType type, Chart chart) {
+   		// create view
+   		type.members += chart.toMethod("createView", _typeReferenceBuilder.typeRef(Void::TYPE), [
+   			parameters += chart.toParameter("parent", _typeReferenceBuilder.typeRef(VerticalLayout))
+   			body = [ append('''«chart.createView»''')]
+   		])
+   		// create components
+   		type.members += chart.toMethod("createComponents", _typeReferenceBuilder.typeRef(Void::TYPE), [
+   			body = [ append('''«chart.createComponents»''')]
+   		])
+   		// create tab
+   		type.members += chart.toMethod("createTabSheet", _typeReferenceBuilder.typeRef(Component), [
+   			exceptions += _typeReferenceBuilder.typeRef(DerivedOlapException)
+   			parameters += chart.toParameter("cellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
+   			parameters += chart.toParameter("axisNo", _typeReferenceBuilder.typeRef(Integer))
+   			body = [ append('''«chart.createTabSheet»''')]
+   		])
+   		// create chart
+   		if (!((chart.charttype instanceof ChartTree))) {
+	   		type.members += chart.toMethod("createChart", _typeReferenceBuilder.typeRef(Component), [
+	   			exceptions += _typeReferenceBuilder.typeRef(DerivedOlapException)
+	   			parameters += chart.toParameter("cellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
+	   			body = [ append('''«chart.createChart»''')]
+	   		])
+   		}
+   		// create D3 chart
+		if ((chart.charttype instanceof ChartTree)) {
+		   		type.members += chart.toMethod("createD3Chart", _typeReferenceBuilder.typeRef(Component), [
+	   			exceptions += _typeReferenceBuilder.typeRef(DerivedOlapException)
+	   			exceptions += _typeReferenceBuilder.typeRef(JsonException)
+	   			parameters += chart.toParameter("cxCellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
+	   			body = [ append('''«chart.createD3Chart»''')]
+	   		])
+   		}
+		// setup-Method
+		type.members += chart.toMethod("setup", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				visibility = JvmVisibility.PROTECTED
+				annotations += _annotationTypesBuilder.annotationRef(PostConstruct)
+				body = [append('''«chart.setup»''')]
+			])
+		// subscribe to eventBroker
+		type.members += chart.toMethod("subscribe", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PROTECTED
+			body = [append('''«chart.subscribe»''')]
+		])
+		// unsubscribe from eventBroker
+		type.members += chart.toMethod("unsubscribe", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PROTECTED
+			annotations += _annotationTypesBuilder.annotationRef(PreDestroy)
+			body = [append('''«chart.unsubscribe»''')]
+		])
+		// locale notification
+		type.members += chart.toMethod("localeChanged", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PUBLIC
+			annotations += _annotationTypesBuilder.annotationRef(Override)
+			parameters += chart.toParameter("locale", _typeReferenceBuilder.typeRef(Locale))
+			body = [append('''«chart.localeChanged»''')]
+		])
+	}
+	
+	// subscribe to view refresh	
+	def subscribe(Chart chart)
+		'''
+		eventBroker.subscribe(EventBrokerMsg.REFRESH_VIEW+"«chart.name»Chart", refreshView);'''
+
+	def unsubscribe(Chart chart)
+		'''
+		eventBroker.unsubscribe(refreshView);'''
+
+	def String getSourceDataMartRefName(Chart chart) {
+		if (chart.source != null && chart.source.datamartRef != null && chart.source.datamartRef.name != null) {
+			return chart.source.datamartRef.name.toString
+		}
+		else {
+			return null;
+		}		
+	}
+	
+	/**
+	 * <p>build the main method to be called from e4.</p> 
+	 *
+	 */
+	def String createView(Chart chart) {
+		var body = 
+		'''
+		chartRefresherDone = false;
+		charts = new ArrayList<DCharts>();
+		coordinateSystem = new ArrayList<Integer>();
+		filterGenerator = new DatamartFilterGenerator();
+		filterGenerator.setDslMetadataService(dslMetadataService);
+		layoutManager = new ViewLayoutManager();
+		chartRefresher = new Refresher();
+		chartRenderDelay = new Refresher();
+		propertyLookupMap = new HashMap<String,PropertyLookup>();
+		'''
+		// the package name of the referenced datamart
+		if (getSourceDataMartRefName(chart) != null) {
+			body = '''
+			«body»
+			datamartClass = new «getSourceDataMartRefName(chart)»Datamart();'''
+		}
+		body = '''
+		«body»
+		parent.setPrimaryStyleName("osbp"); // <== is THIS necessary any more???
+		parent.addStyleName("«EnumCssClass.VIEW.styleName»");
+		parent.addStyleName("«EnumCssClass.CHART_VIEW.styleName»");
+		parent.setSizeFull();
+		layoutManager.init(parent);
+		refreshView = «chart.refreshView»
+		'''
+		// initial refresh due to a bug in DChart
+		body = '''
+		«body»
+		chartRenderDelay.setRefreshInterval(100);
+		chartRenderDelay.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {
+			@Override
+			public void refresh(final Refresher source) {
+				// refresh only once
+				layoutManager.removeExtension(source);
+				log.debug("initial - show delayed");
+				for(DCharts chart : charts) {
+					chart.show();
+				}
+				chartRefresherDone = true;
+			}
+		});
+		layoutManager.addExtension(chartRenderDelay);
+		user.addUserLocaleListener(this);
+		'''
+		//var isTask = chart.source instanceof ChartDatamart && (chart.source as ChartDatamart).datamartRef.source instanceof DatamartTask
+		if (chart.polling) {
+			body = '''
+			«body»
+			chartRefresher.setRefreshInterval(«chart.pollingTime»*1000);
+			chartRefresher.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {
+				@Override
+				public void refresh(final Refresher source) {
+					renderData();
+				}
+			});
+			layoutManager.addExtension(chartRefresher);
+			'''			
+		}
+		if (chart.source != null) {
+			body = '''
+			«body»
+			filterChangeListener = new ValueChangeListener() {
+				@Override
+				public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
+					renderData();
+				}
+			};
+			filterGenerator.createFilter(datamartClass, user, filterChangeListener, layoutManager);
+			'''
+		}
+		body = '''
+		«body»// to resize the chart according to browser
+		Page.getCurrent().addBrowserWindowResizeListener(new BrowserWindowResizeListener() {
+			@Override
+			public void browserWindowResized(BrowserWindowResizeEvent event) {
+				log.debug("browserWindowResized - mark dirty");
+				getParent().markAsDirtyRecursive();
+			}
+		});
+		// to resize the chart according to split positions of partsashcontainer - setContainerData is tracked
+		EObject container = ((EObject)eclipseContext.get(MUIElement.class)).eContainer();
+		if(!(container instanceof MPartStack)) {
+			container = (EObject)eclipseContext.get(MUIElement.class);
+		}
+		container.eAdapters().add(new AdapterImpl() {
+			public void notifyChanged(Notification notification) {
+				if (notification.getEventType()==Notification.SET && 
+						notification.getFeatureID(UIElementImpl.class) == UiPackageImpl.UI_ELEMENT__CONTAINER_DATA)
+				{
+					log.debug("split position changed - mark dirty");
+					getParent().markAsDirtyRecursive();
+				}
+			}
+		});
+		'''
+		return body
+	}
+	
+	/**
+	 * <p>create a handler for external triggered refresh requests.</p> 
+	 *
+	 */
+	def String refreshView(Chart chart) {
+		var body = ""
+		body = '''
+		«body»
+		new EventHandler() {
+			@Override
+			public void handleEvent(Event event) {
+				renderData();
+			}
+		};
+		'''
+		return body
+	}
+	
+	/**
+	 * <p>build the data components.</p> 
+	 *
+	 */
+	def String createComponents(Chart chart) {
+		var body = ""
+		if (chart.source != null) {
+			body = '''
+			«body»// get the results
+			try {
+				final DerivedCellSet cellSet = datamartClass.getResults(user, filterGenerator.getFilter(«(chart.source.datamartRef.source instanceof DatamartCube).booleanValue.toString»), getTaskOperativeDtoClass(), getTaskInitialOperativeDtos());
+				getCoordinateSystem().clear();
+				if (cellSet == null) {
+					promptSecurityMessage(dslMetadataService.translate(locale.toLanguageTag(), "securityMessage"), layoutManager.getDataArea());
+					return;
+				} else {
+					layoutManager.getDataArea().removeAllComponents();
+				}
+				// generate a new result component
+				if (cellSet != null) {
+					// create a multidimensional coordinate system against the cellSet
+					for	(int axis = 0; axis < cellSet.getAxes().size(); axis++) {
+						getCoordinateSystem().add(0);
+					}
+					// remove any previous component
+					if	(dataComponent != null) {
+						layoutManager.getDataArea().removeComponent(dataComponent);
+						dataComponent = null;
+					}
+					if (cellSet.getAxes().size() < 2) {
+						log.error("at least 2 axes from referenced datamart «chart.source.datamartRef.name» are needed to render «chart.name»");
+					}
+					dataComponent = createTabSheet(cellSet, cellSet.getAxes().size());
+					dataComponent.setSizeFull();
+					dataComponent.setId("dataComponent");
+					dataComponent.addStyleName("«EnumCssClass.DATA_COMPONENT.styleName»");
+					layoutManager.getDataArea().addComponent(dataComponent);
+					layoutManager.getDataArea().setExpandRatio(dataComponent, 1);
+				}
+				else {
+					log.error("referenced datamart «chart.source.datamartRef.name» generates no results");
+				}
+			} catch (DerivedOlapException e) {
+				log.error(e.getLocalizedMessage());
+			}
+			'''
+		} else {
+			body = '''
+			«body»
+			// generate a new result component
+			try {
+				// remove any previous component
+				if	(dataComponent != null) {
+					layoutManager.getDataArea().removeComponent(dataComponent);
+					dataComponent = null;
+				}				
+				dataComponent = createTabSheet(null, 2);
+				dataComponent.setSizeFull();
+				dataComponent.setId("dataComponent");
+				dataComponent.addStyleName("«EnumCssClass.DATA_COMPONENT.styleName»");
+				layoutManager.getDataArea().addComponent(dataComponent);
+				layoutManager.getDataArea().setExpandRatio(dataComponent, 1);
+			} catch (DerivedOlapException e) {
+				log.error(e.getLocalizedMessage());
+			}
+			'''
+		}
+		return body
+	}
+
+	/**
+	 * <p>if more than 2 axes (dimensions) are found in the cellSet, build recursive tabsheets as long as the remaining axes are more than 2.</p> 
+	 *
+	 */
+	def String createTabSheet(Chart chart) {
+		var body = 
+		'''
+		charts.clear();
+		// either create a recursive tabsheet or a chart
+		Component component = null;
+		if	(axisNo == 2) {
+		'''
+		if ((chart.charttype instanceof ChartTree)) {
+			body = '''
+			«body»
+				try {
+					component = createD3Chart(cellSet);
+				} catch (JsonException e) {
+					log.error(e.getLocalizedMessage());
+				}
+			'''
+		}
+		else {
+			body = '''
+			«body»
+				component = createChart(cellSet);
+			'''
+		}
+		body = '''
+		«body»
+		}
+		else {		
+			Integer axis = axisNo-1;
+			TabSheet tabsheet = new TabSheet();
+			tabsheet.setSizeFull();
+			DerivedAxis tabAxis = cellSet.getAxes().get(axis);
+			// create a tab page for all tab axis members
+			int tabNo = 0;
+			for	(DerivedPosition column : tabAxis.getPositions()) {
+				// create the title for the axis
+				String title = null;
+				for (DerivedMember member : column.getMembers()) {
+					if	(title == null) {
+						title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+					}
+					else {
+						title += " / "+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+					}
+				}
+				// position the data to this coordinate
+				getCoordinateSystem().set(axis, tabNo);
+				component = createTabSheet(cellSet, axis);
+				// set the caption
+				if (component != null) {
+					component.setCaption(title);
+					// add the component as a tab page
+					tabsheet.addComponent(component);
+				}
+				tabNo++;
+			}
+			component = tabsheet;
+		}
+		return component;'''
+		return body
+	}
+
+	/**
+	 * <p>build the chart components.</p> 
+	 *
+	 */
+	def String createChart(Chart chart) {
+		var body = ""
+		var postfix = ""
+		var chartType = ""
+		var hasAxis = true
+		var multipleAxes = <String, String>newHashMap
+		var ChartAxis category_axis = null 
+		var ChartAxis data_axis = null 
+		var ChartAxis inner_axis = null
+		var ChartAxis outer_axis = null 
+		var axisSwitch = false;
+		var axisPrefix = 'XY'
+		if (chart.charttype instanceof ChartBar) {
+			if ((chart.charttype as ChartBar).swapped) {
+				axisPrefix = 'YX'
+				axisSwitch = true; 
+			}
+		}
+		for (element : chart.source.elements) {
+			if (element instanceof ChartAxis) {
+				var axis = element as ChartAxis
+				if (axis.axis.name.getName.equals('COLUMNS') || axis.axis.name.getName.equals('ROWS')) {
+					if ((axis.renderType.getName.equals("LOG") || axis.renderType.getName.equals("LINEAR") || axis.renderType.getName.equals("PYRAMID"))) {
+						data_axis = axis
+					}
+					if ((axis.renderType.getName.equals("CATEGORY") || axis.renderType.getName.equals("DATE"))) {
+						category_axis = axis
+					}
+				}
+			}
+		}
+		if (chart.charttype instanceof ChartBar) {
+			chartType = "BAR"			
+			postfix = '''_«chartType»'''
+			inner_axis = category_axis
+			outer_axis = data_axis 
+		}
+		else if (chart.charttype instanceof ChartBubble) {
+			chartType = "BUBBLE"			
+			postfix = '''_«chartType»'''
+			hasAxis = true
+			inner_axis = data_axis
+			outer_axis = category_axis 
+		}
+		else if (chart.charttype instanceof ChartDonut) {
+			chartType = "DONUT"			
+			hasAxis = false
+			inner_axis = category_axis
+			outer_axis = data_axis 
+		}
+		else if (chart.charttype instanceof ChartLine) {
+			chartType = "LINE"			
+			inner_axis = category_axis
+			outer_axis = data_axis 
+		}
+		else if (chart.charttype instanceof ChartPie) {
+			chartType = "PIE"			
+			hasAxis = false
+			inner_axis = data_axis
+			outer_axis = category_axis 
+		}
+		else if (chart.charttype instanceof ChartGauge) {
+			chartType = "METER_GAUGE"			
+			hasAxis = false
+			inner_axis = data_axis
+			outer_axis = category_axis 
+		}
+
+		body = 
+		'''
+		List<Integer> coordinate = new ArrayList<Integer>(getCoordinateSystem());
+		'''
+		body = '''
+		«body»// create a label series
+		List<String> «data_axis.axis.name.literal»TitlesArray = new ArrayList<String>();
+		for	(DerivedPosition pos : cellSet.getAxes().get(«data_axis.axis.name.value»).getPositions()) {
+		'''
+		body = '''
+		«body»
+			String title = null;
+			Boolean valueUsed = false;
+			for (DerivedMember member : pos.getMembers()) {
+				if	(title == null) {
+					title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+				}
+				else {
+					title += " "+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+				}
+			}
+			«data_axis.axis.name.literal»TitlesArray.add(title);
+		}
+		'''
+		if (hasAxis) {
+			body = '''
+			«body»Series «data_axis.axis.name.literal»Series = new Series();
+			'''
+			body = '''
+			«body»if («data_axis.axis.name.literal»TitlesArray.size() > 0) {
+			'''
+			// evaluate multiple scales
+			var showMarker = false
+			if (chart.charttype instanceof ChartLine) {
+				showMarker = (chart.charttype as ChartLine).showMarker
+			}
+			body = '''«body»«chart.createLabelSeries(data_axis, multipleAxes, axisPrefix, showMarker)»'''
+			body = '''
+			«body»}
+			'''
+		}	
+		body = '''
+		«body»// create the data series ticks
+		String «category_axis.axis.name.literal»AxisLabel = "";
+		Boolean «category_axis.axis.name.literal»AxisLabelSet = false;
+		List<String> «category_axis.axis.name.literal»TitlesArray = new ArrayList<String>();
+		for	(DerivedPosition pos : cellSet.getAxes().get(«category_axis.axis.name.value»).getPositions()) {
+			String title = "";
+			for (DerivedMember member : pos.getMembers()) {
+		    	String[] tokens = member.getUniqueName().split("\\]\\.\\[");
+		    	if (!«category_axis.axis.name.literal»AxisLabelSet) {
+		    		if («category_axis.axis.name.literal»AxisLabel.length() > 0) {
+		    			«category_axis.axis.name.literal»AxisLabel += " / ";
+		    		}
+		    		«category_axis.axis.name.literal»AxisLabel += dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getLevel().getName());
+		    	}
+		    	int start = 1;
+		    	// if shortlabel is configured, use only last level name
+		    	if («category_axis.shortLabel.booleanValue») {
+		    		start = tokens.length-1;
+		    	}
+		    	for	(int token = start; token < tokens.length; token++) {
+		    		title += dslMetadataService.translate(user.getLocale().toLanguageTag(), tokens[token])+" ";
+		    	}
+			}
+			«category_axis.axis.name.literal»AxisLabelSet = true;
+			«category_axis.axis.name.literal»TitlesArray.add(title.trim().replace("[", "").replace("]", ""));
+		}
+		'''
+		if (hasAxis) {
+			body = '''
+			«body»Ticks «category_axis.axis.name.literal»Ticks = new Ticks();
+			«category_axis.axis.name.literal»Ticks.add(«category_axis.axis.name.literal»TitlesArray.toArray());
+			'''
+		}
+
+		body = '''
+		«body»// copy cellset data to data series
+		DataSeries dataSeries = new DataSeries();
+		'''
+		if (chart.charttype instanceof ChartBubble) {
+			body = '''
+			«body»dataSeries.newSeries();
+			'''
+		}
+		body = '''
+		«body»int «outer_axis.axis.name.literal»No = 0;
+		'''
+		body = '''
+		«body»for	(DerivedPosition «outer_axis.axis.name.literal»Pos : cellSet.getAxes().get(«outer_axis.axis.name.value»).getPositions()) {
+		'''
+		body = '''
+		«body»	coordinate.set(«outer_axis.axis.name.value», «outer_axis.axis.name.literal»No);
+		'''
+		if (chart.charttype instanceof ChartDonut) {
+			body = '''
+			«body»	dataSeries.newSeries();
+			'''
+		}
+		if (!(chart.charttype instanceof ChartPie) && !(chart.charttype instanceof ChartDonut)) {
+			body = '''
+			«body»	ArrayList<Object> «inner_axis.axis.name.literal»DataSeries = new ArrayList<Object>();
+			'''				 	
+		}
+		body = '''
+		«body»	int «inner_axis.axis.name.literal»No = 0;
+		'''
+		body = '''
+		«body»	for	(DerivedPosition «inner_axis.axis.name.literal»Pos : cellSet.getAxes().get(«inner_axis.axis.name.value»).getPositions()) {
+		'''
+		if (chart.charttype instanceof ChartPie) {
+			body = '''
+			«body»		dataSeries.newSeries();
+			'''
+		}
+		body = '''
+		«body»		coordinate.set(«inner_axis.axis.name.value», «inner_axis.axis.name.literal»No);
+		'''
+		body = '''
+		«body»
+				Object value = null;
+				DerivedCell cell = cellSet.getCell(coordinate);
+				if (cell != null) {
+					value = cell.getValue();
+				}
+		'''
+		if (chart.charttype instanceof ChartPie || chart.charttype instanceof ChartDonut) {
+			body = '''
+			«body»		dataSeries.add(«outer_axis.axis.name.literal»TitlesArray.get(«outer_axis.axis.name.literal»No)+" "+«inner_axis.axis.name.literal»TitlesArray.get(«inner_axis.axis.name.literal»No),(value == null ? 0.0 : value));
+			'''
+		}
+		else {
+			body = '''
+			«body»		«inner_axis.axis.name.literal»DataSeries.add(value == null ? 0.0 : value);
+			'''
+		}
+		body = '''
+		«body»		«inner_axis.axis.name.literal»No ++;
+			}
+		'''
+		if (!(chart.charttype instanceof ChartPie) && !(chart.charttype instanceof ChartDonut)) {
+			if (chart.charttype instanceof ChartBubble) {
+				body = '''
+				«body»	«inner_axis.axis.name.literal»DataSeries.add(«outer_axis.axis.name.literal»TitlesArray.get(«outer_axis.axis.name.literal»No));
+				'''
+			}
+			body = '''
+			«body»	dataSeries.add(«inner_axis.axis.name.literal»DataSeries.toArray());
+			'''
+		}
+		body = '''
+		«body»	«outer_axis.axis.name.literal»No ++;
+		}
+		'''
+		body = '''
+		«body»SeriesDefaults seriesDefaults = new SeriesDefaults()
+			.setRenderer(SeriesRenderers.«chartType»);
+		'''
+		if (chart.charttype instanceof ChartLine) {
+			body = '''
+			«body»seriesDefaults.setFillToZero(«(chart.charttype as ChartLine).fillToZero.booleanValue.toString»).setFill(«(chart.charttype as ChartLine).fillArea.toString»);
+			'''
+			if ((chart.charttype as ChartLine).trendLine) {
+				body = '''
+				«body»seriesDefaults.setTrendline(
+					new Trendline().setShow(true).setLineWidth(1));
+				'''
+			} 
+		}
+		// options
+		body = '''
+		«body»Options options = new Options()
+			.setSeriesDefaults(seriesDefaults);
+		'''
+		if (chart.charttype instanceof ChartPie) {
+			body = '''
+			«body»seriesDefaults.setRendererOptions(new PieRenderer()
+				.setShowDataLabels(true).setFill(«(!(chart.charttype as ChartPie).empty).toString»));
+			'''
+		}
+		else if (chart.charttype instanceof ChartDonut) {
+			body = '''
+			«body»seriesDefaults.setRendererOptions(new DonutRenderer()
+				.setShowDataLabels(true)
+				.setStartAngle(-90)
+				.setSliceMargin(3));
+			'''
+		}
+		else if (chart.charttype instanceof ChartBubble) {
+			body = '''
+			«body»seriesDefaults.setRendererOptions(new BubbleRenderer()
+				.setVaryBubbleColors(true)
+				«IF (chart.charttype as ChartBubble).multiplier».setAutoscaleMultiplier(«(chart.charttype as ChartBubble).multiplierValue»f)«ENDIF»
+			    «IF (chart.charttype as ChartBubble).transparent».setHighlightAlpha(0.8f).setBubbleAlpha(0.6f)«ENDIF»
+				«IF (chart.charttype as ChartBubble).gradient».setBubbleGradients(true)«ENDIF»
+				.setShowLabels(false)
+				.setAutoscaleBubbles(true));
+			'''
+		}
+		else if (chart.charttype instanceof ChartGauge) {
+			var intervalValues = ""
+			var intervalColors = ""
+			if ((chart.charttype as ChartGauge).hasIntervals) {
+				for (interval : (chart.charttype as ChartGauge).intervals) {
+					if (interval instanceof ChartNumberInterval) {
+						intervalValues = '''«intervalValues»«IF intervalValues.length>0»,«ENDIF»«(interval as ChartNumberInterval).numberIntervalValue»f'''
+						if ((interval as ChartNumberInterval).numberRange instanceof ChartSegmentColor) {
+							intervalColors = '''«intervalColors»«IF intervalColors.length>0»,«ENDIF»"«((interval as ChartNumberInterval).numberRange as ChartSegmentColor).rgb.toHex»"'''
+						} 
+					}
+				}
+			}
+			body = '''
+			«body»seriesDefaults.setRendererOptions(new MeterGaugeRenderer()
+				.setShowTickLabels(«(chart.charttype as ChartGauge).hasTicks.toString»)
+				«IF (chart.charttype as ChartGauge).labeled».setLabel("«(chart.charttype as ChartGauge).labelValue»")«ENDIF»
+				«IF (chart.charttype as ChartGauge).hasIntervals».setIntervals(«intervalValues»)«ENDIF»
+				«IF (chart.charttype as ChartGauge).hasIntervals».setIntervalColors(«intervalColors»)«ENDIF»);
+			'''
+		}
+		else if (chart.charttype instanceof ChartBar) {
+			body = '''
+			«body»seriesDefaults.setFillToZero(true);
+			seriesDefaults.setRendererOptions(new BarRenderer()
+			    «IF axisSwitch».setBarDirection(BarDirections.HOTIZONTAL));«ELSE».setBarDirection(BarDirections.VERTICAL));«ENDIF»
+			'''
+			if ((chart.charttype as ChartBar).stacked) {
+				body = '''
+				«body»options.setStackSeries(true);
+				'''
+			}
+			if ((chart.charttype as ChartBar).shadow) {
+				body = '''
+				«body»seriesDefaults.setShadow(true).setShadowAlpha(0.05f);
+				'''			
+			}
+			if ((chart.charttype as ChartBar).animated) {
+				body = '''
+				«body»options.setAnimate(true);
+				'''
+			}
+		}
+		body = '''
+		«body»
+		String[] seriesColors = {"#98E958","#3090F0","#EC6464","#F9DD51","#24DCD4","#EC64A5","#685CB0","#FF7D42","#AA514D","#7FB053","#BBA85B","#247981"};
+«««		String[] seriesColors = {"#0000FF","#FF0000","#00FF00","#FFFF00","#FF00FF","#00FFFF","#FF4500","#008000","#00BFFF","#FF69B4","#FFD700","#000080"};
+		options.setSeriesColors(seriesColors);
+		'''
+		if (hasAxis) {
+			// axes
+			body = '''
+			«body»Axes axes = new Axes();
+			'''
+			if (chart.charttype instanceof ChartBubble) {
+				// x
+				body = '''
+				«body»CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();
+				axisTickRenderer.setTextColor("#202020");
+				if («data_axis.axis.name.literal»TitlesArray.size() > 0) {
+					axes.addAxis(new XYaxis(XYaxes.«axisPrefix.charAt(0)»).setLabel(«data_axis.axis.name.literal»TitlesArray.get(0)).setTickOptions(axisTickRenderer«IF category_axis.angle!=0».setAngle(«data_axis.angle»)«ENDIF»));
+					axes.addAxis(new XYaxis(XYaxes.«axisPrefix.charAt(1)»).setLabel(«data_axis.axis.name.literal»TitlesArray.get(1)).setTickOptions(axisTickRenderer«IF category_axis.angle!=0».setAngle(«data_axis.angle»)«ENDIF»));
+					axes.addAxis(new XYaxis(XYaxes.«axisPrefix.charAt(1)»2).setLabel(«data_axis.axis.name.literal»TitlesArray.get(2)).setTickOptions(axisTickRenderer«IF category_axis.angle!=0».setAngle(«data_axis.angle»)«ENDIF»));
+				}
+				'''							
+			}
+			else {
+				// x
+				body = '''
+				«body»CanvasAxisTickRenderer tickRenderer = new CanvasAxisTickRenderer();
+				tickRenderer.setTextColor("#202020");
+				axes.addAxis(new XYaxis(XYaxes.«axisPrefix.charAt(0)»)
+					.setRenderer(AxisRenderers.«category_axis.renderType.name().toString»)
+					.setLabel(«category_axis.axis.name.literal»AxisLabel)
+					.setTicks(«category_axis.axis.name.literal»Ticks)
+					.setTickOptions(tickRenderer«IF category_axis.angle!=0».setAngle(«category_axis.angle»)«ENDIF»));
+				'''							
+				// y .. y9
+				body = '''
+				«body»CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();
+				axisTickRenderer.setTextColor("#202020");
+				axes.addAxis(new XYaxis(XYaxes.«axisPrefix.charAt(1)»)
+					.setPad(1.05f)
+					.setTickOptions(axisTickRenderer«IF data_axis.angle!=0».setAngle(«data_axis.angle»)«ENDIF»));
+				'''
+				// additional axes
+				for (axisKey : multipleAxes.keySet) {
+					if (!axisKey.equals("1")) {
+						body = '''«body»«multipleAxes.get(axisKey)»'''
+					}
+				}
+				if (multipleAxes.keySet.size > 0) {
+					body = '''
+					«body»LinearAxisRenderer linearAxisRenderer = new LinearAxisRenderer();
+					linearAxisRenderer.setAlignTicks(true);
+					AxesDefaults axesDefaults = new AxesDefaults()
+						.setUseSeriesColor(true)
+						.setBorderWidth(3)	
+						.setRendererOptions(linearAxisRenderer);
+					options.setAxesDefaults(axesDefaults);
+					'''
+				}
+			}
+			body = '''
+			«body»options.setAxes(axes);
+			'''
+		}		
+		// legend
+		for (element : chart.source.elements) {
+			if (element instanceof ChartLegend) {
+				var legend = element as ChartLegend
+				body = '''
+				«body»Legend legend = new Legend().setShow(«(legend != null).booleanValue.toString»);
+				'''
+				body = '''
+				«body»legend.setPlacement(LegendPlacements.«legend.placement.name()»);
+				'''
+				if (legend.toggle) {
+					body = '''
+					«body»EnhancedLegendRenderer renderer = new EnhancedLegendRenderer();
+					renderer.setSeriesToggle(SeriesToggles.«legend.toggleType.getName»);
+					renderer.setSeriesToggleReplot(«legend.replot.booleanValue.toString»);
+					legend.setRendererOptions(renderer);
+					'''
+				}
+				body = '''
+				«body»options.setLegend(legend);
+				'''
+			}
+		}
+			
+		// highlighter
+		for (element : chart.source.elements) {
+			if (element instanceof ChartHighlighter) {
+				var highlighter = element as ChartHighlighter
+				body = '''
+				«body»Highlighter highlighter = new Highlighter().setShow(«(highlighter != null).booleanValue.toString»);
+				'''
+				body = '''
+				«body»highlighter.setShowTooltip(true)
+				.setTooltipAlwaysVisible(«highlighter.tooltipAlways.booleanValue.toString»)
+				.setKeepTooltipInsideChart(«highlighter.insideChart.booleanValue.toString»)
+				.setTooltipLocation(TooltipLocations.«highlighter.location.name()»)
+				.setBringSeriesToFront(true)
+				.setFadeTooltip(true)
+				.setShowMarker(true);
+				'''
+				body = '''
+				«body»highlighter.setTooltipAxes(TooltipAxes.«axisPrefix»«postfix»);
+				'''
+				body = '''
+				«body»options.setHighlighter(highlighter);
+				'''
+			}
+		}
+		
+		// cursor
+		if (chart.charttype instanceof ChartLine) {
+			if ((chart.charttype as ChartLine).cursor) {
+				body = '''
+				«body»Cursor cursor = new Cursor()
+					.setShow(true)
+					.setZoom(«(chart.charttype as ChartLine).zoom.toString»)
+					.setShowTooltip(«(chart.charttype as ChartLine).tooltip.toString»);
+				options.setCursor(cursor);
+				'''
+			}
+			if ((chart.charttype as ChartLine).animated) {
+				body = '''
+				«body»options.setAnimate(true);
+				'''
+			}
+		}
+		if (hasAxis) {
+			// series
+			body = '''
+			«body»options.setSeries(«data_axis.axis.name.literal»Series);
+			'''
+		}
+		body = '''
+		«body»DCharts chart = new DCharts()
+			.setDataSeries(dataSeries)
+			.setOptions(options)
+			.setEnableDownload(true)
+			.setDownloadButtonCaption(dslMetadataService.translate(locale.toLanguageTag(), "download"))
+			.setDownloadFilename("«chart.name»")
+			.setDownloadButtonLocation(DownloadButtonLocation.TOP_RIGHT);
+		'''
+		body = '''
+		«body»chart.setId("chart");
+		chart.setImmediate(true);
+		if(chartRefresherDone) {
+			chart.show();
+		}
+		charts.add(chart);
+		return chart;'''			
+		return body
+	}
+	
+	/**
+	 * <p>helper method to convert a rgb string to a hex string.</p> 
+	 *
+	 */
+	def String toHex(String rgb) {
+		var colorHex = "#"
+		for (color : rgb.split(",")) {
+			var i = new Integer(color);
+			colorHex = '''«colorHex»«String::format("%02x", i)»'''
+		}
+		return colorHex
+	}
+	
+	/**
+	 * <p>build the label series. Create multiple y-axes when the underlying datamart presents different scales.</p> 
+	 *
+	 * <p>scales are used to display line charts together for comparison reason but they are of different scalings.</p> 
+	 */
+	def String createLabelSeries(Chart chart, ChartAxis data_axis, HashMap<String,String>multipleAxes, String axisPrefix, boolean showMarker) {
+		var body = ""
+		var msrCnt = 0
+		// find multiple axes defined in datamart
+		if ((chart.source as ChartDatamart).datamartRef.source instanceof DatamartCube) {
+			for (axisOrSlicer : ((chart.source as ChartDatamart).datamartRef.source as DatamartCube).axisslicer) {
+				if (axisOrSlicer instanceof DatamartAxis) {
+					for (element : (axisOrSlicer as DatamartAxis).elements) {
+						if (element instanceof DatamartDerivedMeasure) {
+							if ((element as DatamartDerivedMeasure).scaled) {
+								body = '''«body»«(element as DatamartDerivedMeasure).scale.createScale(data_axis, multipleAxes, msrCnt, axisPrefix, showMarker)»'''
+								msrCnt = msrCnt + 1 
+							}
+						}
+						if (element instanceof DatamartMeasure) {
+							if ((element as DatamartMeasure).scaled) {
+								body = '''«body»«(element as DatamartMeasure).scale.createScale(data_axis, multipleAxes, msrCnt, axisPrefix, showMarker)»'''
+								msrCnt = msrCnt + 1 
+							}
+						}
+					}
+				}
+			}
+		}
+		else if ((chart.source as ChartDatamart).datamartRef.source instanceof DatamartEntity) {
+			var entity = ((chart.source as ChartDatamart).datamartRef.source as DatamartEntity)
+			body = '''«body»«entity.entityScale(data_axis, multipleAxes, msrCnt, axisPrefix, showMarker)»'''
+		}
+		// no multiple axes defined in datamart
+		if (multipleAxes.keySet.size == 0) {
+			body = '''
+			«body»	for (String title : «data_axis.axis.name.literal»TitlesArray) {
+					«data_axis.axis.name.literal»Series.addSeries(new XYseries().setLabel(title).setShowMarker(«showMarker.toString»));
+				}
+			'''			
+		}
+		return body
+	}
+	
+	/**
+	 * <p>helper method for scales coming from datamart entities not from cubes.</p> 
+	 *
+	 */
+	def String entityScale(DatamartEntity entity, ChartAxis data_axis, HashMap<String,String> multipleAxes, int msrCnt, String axisPrefix, boolean showMarker) {
+		var counter = msrCnt
+		var body = ""
+		for (property : entity.properties) {
+			if (property instanceof DatamartProperty) {
+				if (property.scaled) {
+					body = '''«body»«property.scale.createScale(data_axis, multipleAxes, counter, axisPrefix, showMarker)»'''
+					counter = counter + 1
+				}
+			}
+		}
+		for (navigation : entity.navigations) {
+			if (navigation instanceof DatamartMember) {
+				body = '''«body»«(navigation as DatamartMember).datamartEntity.entityScale(data_axis, multipleAxes, counter, axisPrefix, showMarker)»'''
+			}
+			if (navigation instanceof DatamartOwner) {
+				body = '''«body»«(navigation as DatamartOwner).datamartEntity.entityScale(data_axis, multipleAxes, counter, axisPrefix, showMarker)»'''
+			}
+		}
+		return body
+	}
+	
+	/**
+	 * <p>helper method for scales.</p> 
+	 *
+	 */
+	def String createScale(ValueScaleEnum scale, ChartAxis data_axis, HashMap<String,String> multipleAxes, int msrCnt, String axisPrefix, boolean showMarker) {
+		var multipleBody = ""
+		var body = ""
+		var scaleOrdinal = scale.ordinal
+		var scaleName = scale.toString
+		body = '''
+		«body»
+			«data_axis.axis.name.literal»Series.addSeries(new XYseries(«axisPrefix.charAt(1)»axes.«axisPrefix.charAt(1)»«IF scaleOrdinal != 0»«(scaleOrdinal+1)»«ENDIF»).setLabel(«data_axis.axis.name.literal»TitlesArray.get(«msrCnt»)).setShowMarker(«showMarker.toString»));
+		'''
+		if (!multipleAxes.keySet.contains(scaleName)) {
+			// axis 1 is never expressed, but 2..9
+			multipleBody = 
+			'''axes.addAxis(new XYaxis(XYaxes.«axisPrefix.charAt(1)»«IF scaleOrdinal != 0»«(scaleOrdinal+1)»«ENDIF»).setTickOptions(axisTickRenderer«IF data_axis.angle!=0».setAngle(«data_axis.angle»)«ENDIF»));
+			'''
+			multipleAxes.put(scaleName, multipleBody)
+		}
+		return body
+	}
+	
+	/**
+	 * <p>helper method to get a property name or its alias if present of a entity's property object.</p> 
+	 *
+	 */
+	def String getPropertyName(DatamartProperty property) {
+		return (property.propertyRef as LAttribute).name.toUpperCase 
+	}
+ 
+	/**
+	 * <p>helper method to get a level name of a hierarchy's level object.</p> 
+	 *
+	 */
+	def String getLevelName(CubeLevel level) {
+		return level.name
+	}
+	
+	def String setup(Chart chart) {
+		var body = ""
+		body = '''
+		«body»
+		subscribe();'''
+		var filterIdMap = <String,String>newHashMap
+		if (chart.source != null && chart.source.datamartRef != null && chart.source.datamartRef.name != null) {
+			datamartInferrer.createFilterMap(chart.source.datamartRef, filterIdMap)
+		}
+		for (filter : filterIdMap.keySet) {
+			body = '''«body»«filterIdMap.get(filter).setupEvent(filter)»'''
+		}
+		return body
+	}
+	
+	def setupEvent(String eventId, String filter) {
+		'''
+		eventBroker.subscribe("«eventId»",
+		new org.osgi.service.event.EventHandler() {
+			@Override
+			public void handleEvent(org.osgi.service.event.Event event) {
+				final EventBrokerMsg msg = (EventBrokerMsg)event.getProperty(org.eclipse.e4.core.di.extensions.EventUtils.DATA);
+				filterGenerator.selectItem("«filter»", msg.getName());
+			}
+		});
+		'''
+	}
+
+	def localeChanged(Chart chart)
+		'''
+		this.locale = locale;
+		if(charts != null) {
+			for(DCharts chart:charts) {
+				chart.setLocale(locale);
+				«IF chart.source.datamartRef.description && 
+					chart.source.datamartRef.descriptionValue != null»
+					chart.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "«chart.source.datamartRef.descriptionValue»"));
+					chart.setDownloadButtonCaption(dslMetadataService.translate(locale.toLanguageTag(), "download"));
+				«ENDIF»
+			}
+		}
+		if(filterGenerator != null) {
+			filterGenerator.setLocale(locale);
+		}
+		if(layoutManager != null) {
+			layoutManager.setLabelValue(dslMetadataService.translate(locale.toLanguageTag(), "«chart.name»"));
+		}
+		'''	
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend
new file mode 100644
index 0000000..932eb66
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend
@@ -0,0 +1,525 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.jvmmodel
+
+import com.vaadin.data.Property.ValueChangeListener
+import com.vaadin.server.Page
+import com.vaadin.server.Page.Styles
+import com.vaadin.ui.HorizontalLayout
+import com.vaadin.ui.JavaScriptFunction
+import com.vaadin.ui.Label
+import com.vaadin.ui.TabSheet
+import com.vaadin.ui.UI
+import elemental.json.JsonArray
+import elemental.json.JsonException
+import elemental.json.JsonObject
+import java.util.ArrayList
+import java.util.Collection
+import java.util.Date
+import java.util.HashMap
+import java.util.List
+import java.util.Locale
+import java.util.Map
+import java.util.ResourceBundle
+import java.util.concurrent.Executors
+import javax.inject.Inject
+import org.dussan.vaadin.dcharts.DCharts
+import org.dussan.vaadin.dcharts.DownloadButtonLocation
+import org.dussan.vaadin.dcharts.base.elements.Trendline
+import org.dussan.vaadin.dcharts.base.elements.XYaxis
+import org.dussan.vaadin.dcharts.base.elements.XYseries
+import org.dussan.vaadin.dcharts.data.DataSeries
+import org.dussan.vaadin.dcharts.data.Ticks
+import org.dussan.vaadin.dcharts.metadata.LegendPlacements
+import org.dussan.vaadin.dcharts.metadata.PyramidSides
+import org.dussan.vaadin.dcharts.metadata.SeriesToggles
+import org.dussan.vaadin.dcharts.metadata.TooltipAxes
+import org.dussan.vaadin.dcharts.metadata.XYaxes
+import org.dussan.vaadin.dcharts.metadata.Xaxes
+import org.dussan.vaadin.dcharts.metadata.Yaxes
+import org.dussan.vaadin.dcharts.metadata.directions.BarDirections
+import org.dussan.vaadin.dcharts.metadata.locations.TooltipLocations
+import org.dussan.vaadin.dcharts.metadata.renderers.AxisRenderers
+import org.dussan.vaadin.dcharts.metadata.renderers.SeriesRenderers
+import org.dussan.vaadin.dcharts.options.Axes
+import org.dussan.vaadin.dcharts.options.AxesDefaults
+import org.dussan.vaadin.dcharts.options.Cursor
+import org.dussan.vaadin.dcharts.options.Highlighter
+import org.dussan.vaadin.dcharts.options.Legend
+import org.dussan.vaadin.dcharts.options.Options
+import org.dussan.vaadin.dcharts.options.Series
+import org.dussan.vaadin.dcharts.options.SeriesDefaults
+import org.dussan.vaadin.dcharts.options.Title
+import org.dussan.vaadin.dcharts.renderers.axis.LinearAxisRenderer
+import org.dussan.vaadin.dcharts.renderers.legend.EnhancedLegendRenderer
+import org.dussan.vaadin.dcharts.renderers.series.BarRenderer
+import org.dussan.vaadin.dcharts.renderers.series.BubbleRenderer
+import org.dussan.vaadin.dcharts.renderers.series.DonutRenderer
+import org.dussan.vaadin.dcharts.renderers.series.MeterGaugeRenderer
+import org.dussan.vaadin.dcharts.renderers.series.PieRenderer
+import org.dussan.vaadin.dcharts.renderers.series.PyramidRenderer
+import org.dussan.vaadin.dcharts.renderers.tick.AxisTickRenderer
+import org.dussan.vaadin.dcharts.renderers.tick.CanvasAxisTickRenderer
+import org.eclipse.e4.core.di.extensions.EventUtils
+import org.eclipse.e4.core.services.events.IEventBroker
+import org.eclipse.e4.ui.model.application.ui.MUIElement
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack
+import org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl
+import org.eclipse.emf.common.notify.Adapter
+import org.eclipse.emf.common.notify.Notification
+import org.eclipse.emf.common.notify.impl.AdapterImpl
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.osbp.eventbroker.EventBrokerMsg
+import org.eclipse.osbp.ui.api.datamart.DerivedOlapException
+import org.eclipse.osbp.utils.constants.ExtendedDate
+import org.eclipse.osbp.utils.vaadin.ViewLayoutManager
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
+import org.eclipse.osbp.xtext.chart.Chart
+import org.eclipse.osbp.xtext.chart.ChartModel
+import org.eclipse.osbp.xtext.chart.ChartTree
+import org.eclipse.osbp.xtext.datamart.common.DatamartFilterGenerator
+import org.eclipse.osbp.xtext.datamart.common.olap.CellSetToD3JsonConverter
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCell
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedHierarchy
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedLevel
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedPosition
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig
+import org.eclipse.xtext.xbase.compiler.ImportManager
+import org.osgi.service.event.Event
+import org.osgi.service.event.EventHandler
+
+class ChartModelGenerator extends I18NModelGenerator {
+	@Inject extension IQualifiedNameProvider
+	@Inject extension D3JsJavaUtil
+	@Inject extension BasicDslGeneratorUtils
+	
+	override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) {
+		// required to initialize the needed builder to avoid deprecated methods
+		builder = context.eResource
+		// ---------
+		importManager.addImportFor(_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(String)).type)
+		importManager.addImportFor(_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(String)).type)
+		importManager.addImportFor(_typeReferenceBuilder.typeRef(Collection, _typeReferenceBuilder.typeRef(String)).type)
+		addImportFor(importManager, _typeReferenceBuilder
+			, ValueChangeListener
+			, DCharts
+			, Label
+			, List
+			, ArrayList
+			, Page
+			, Styles
+			, DerivedAxis
+			, DerivedCell
+			, DerivedPosition
+			, DerivedMember
+			, HorizontalLayout
+			, TabSheet
+			, Series
+			, XYseries
+			, Ticks
+			, DataSeries
+			, SeriesDefaults
+			, SeriesRenderers
+			, CanvasAxisTickRenderer
+			, DonutRenderer
+			, PieRenderer
+			, BubbleRenderer
+			, BarRenderer
+			, BarDirections
+			, MeterGaugeRenderer
+			, PyramidRenderer
+			, PyramidSides
+			, Trendline
+			, Cursor
+			, Legend
+			, LegendPlacements
+			, EnhancedLegendRenderer
+			, SeriesToggles
+			, Highlighter
+			, Title
+			, TooltipLocations
+			, TooltipAxes
+			, Axes
+			, XYaxes
+			, XYaxis
+			, Xaxes
+			, Yaxes
+			, AxisTickRenderer
+			, AxisRenderers
+			, LinearAxisRenderer
+			, AxesDefaults
+			, DownloadButtonLocation
+			, Options
+			, DerivedHierarchy
+			, DerivedLevel
+			, DerivedOlapException
+			, IEventBroker
+			, CellSetToD3JsonConverter
+			, Date
+			, ExtendedDate
+			, JavaScriptFunction
+			, JsonArray
+			, JsonObject
+			, JsonException
+			, EventHandler
+			, Event
+			, EventUtils
+			, EventBrokerMsg
+			, Executors
+			, Page.BrowserWindowResizeEvent
+			, Page.BrowserWindowResizeListener
+			, Notification
+			, Adapter
+			, AdapterImpl
+			, EObject
+			, UIElementImpl
+			, UiPackageImpl
+			, MUIElement
+			, MPartStack
+			, UI
+			, ResourceBundle
+			, Locale
+			, DatamartFilterGenerator
+			, ViewLayoutManager
+			
+		)
+		super.createAppendable(context, importManager, config)
+	}
+	
+	override void doGenerate(Resource input, IFileSystemAccess fsa) {
+		super.addTranslatables("download")
+		super.doGenerate(input, fsa )
+		for (obj : input.contents) {
+			obj.internalDoGenerate(fsa)
+		}
+	}
+	
+	def dispatch void internalDoGenerate(ChartModel chartModel, IFileSystemAccess fsa) { 
+   		for (pkg : chartModel.packages) {
+   			for (chart : pkg.charts) {
+   				if ((chart.charttype instanceof ChartTree)) {
+   					var pckgName = pkg.fullyQualifiedName.toString
+//					println(pckgName)
+					var strBuilder = new StringBuilder
+					var pckgNamePath = pckgName.replaceAll("\\.","/")
+//					var propOutputFile = '''«pckgNamePath»/«chart.createChartJsFilename(chartTree)»'''
+					var propOutputFile = '''«pckgNamePath»/«chart.createChartJsFilename»'''
+//					println("********************* Property-Output *********************")
+					chart.generateJsFile(strBuilder)
+					if (strBuilder.length > 0){
+						fsa.generateFile(propOutputFile, strBuilder)
+//						println(strBuilder.toString)
+					}
+   				}
+   			}
+   		}
+   	}
+	
+	def void generateJsFile(Chart chart,StringBuilder strBuilder){
+		var chartFilePath = chart.createfullyQualifiedChartFilename.replaceAll("\\.","_")
+   		if (chart.charttype instanceof ChartTree){
+   			var chartTree = chart.charttype as ChartTree
+			if (chartTree.map){
+				strBuilder.generateTreeMapJsFile(chartFilePath)
+			} else if (chartTree.collapsible) {
+				strBuilder.generateCollTreeJsFile(chartFilePath)
+			}
+   		}
+	}
+	
+	def void generateTreeMapJsFile(StringBuilder strBuilder, String chartJavaFileName){
+		strBuilder.append('''«chartJavaFileName» = function() {
+	
+		var margin = {
+		    top: 40,
+		    right: 10,
+		    bottom: 10,
+		    left: 10
+		},
+		    width = 960 - margin.left - margin.right,
+		    height = 500 - margin.top - margin.bottom;
+
+		var color = d3.scale.category20c();
+
+		function position() {
+		    this.style("left", function (d) {
+		        return d.x + "px";
+		    })
+		        .style("top", function (d) {
+		            return d.y + "px";
+		        })
+		        .style("width", function (d) {
+		            return Math.max(0, d.dx - 1) + "px";
+		        })
+		        .style("height", function (d) {
+		            return Math.max(0, d.dy - 1) + "px";
+		        });
+		}
+
+		var cxD3TreeMapJsHTMLRootComponent = this.getElement();
+		var cxD3TreeMapJsComponentHtmlTagId = this.getState().htmlTagId;
+		var checked = "";
+		var connector = this;
+		var dataColumn = "";
+
+		var preValueLabel = "";
+
+		for (var i=0;i < this.getState().dataColumnList.length;i++) {
+			if (i == 0){
+				checked = " checked";
+				preValueLabel = this.getState().dataColumnList[0];
+			} else {
+				checked = "";
+			}
+			dataColumn = dataColumn + "\t<label><input id=\""+this.getState().htmlTagId+"_input\" type=\"radio\" name=\"mode\" value=\""+ this.getState().dataColumnList[i] + "\"" + checked + "> "+ this.getState().dataColumnList[i] + "</label>\n";
+		}
+		var treemap = d3.layout.treemap()
+		.size([width, height])
+		.sticky(true)
+		.value(function (d) {
+			return eval("d." + preValueLabel);
+		});
+//		alert("dataColumn: " + dataColumn);
+		cxD3TreeMapJsHTMLRootComponent.innerHTML = 	"<form>\n" +
+						dataColumn +
+						"</form>\n" +
+						"<div id=\""+this.getState().htmlTagId+"_div\">" + "</div>";
+			var cxD3TreeMapJsHTMLRootComponentSelection = d3.select(cxD3TreeMapJsHTMLRootComponent).select("#"+this.getState().htmlTagId+"_div");
+//			alert("selection: " + selection);
+			var cxD3TreeMapJsHTMLRootComponentDiv = cxD3TreeMapJsHTMLRootComponentSelection.append("div")
+							    .style("position", "relative")
+								.style("width", (width + margin.left + margin.right) + "px")
+								.style("height", (height + margin.top + margin.bottom) + "px")
+							    .style("left", margin.left + "px")
+							    .style("top", margin.top + "px");
+			
+			jsonTreeMapFunction = function(jsonObj) {
+				var node = cxD3TreeMapJsHTMLRootComponentDiv.datum(jsonObj).selectAll(".node")
+				.data(treemap.nodes)
+				.enter().append("div")
+				.attr("class", "node")
+				.attr("title", function(d) { return d.children ? "" : d.tooltipName + "\n" + preValueLabel + ": " + eval("d." + preValueLabel); })
+				.call(position)
+				.style("background", function(d) { return d.children ? color(d.name) : null; })
+//					      .style("background", function(d) { return d.children ? d3.rgb("red") : null; })
+				.text(function(d) { return d.children ? null : d.name; });
+				
+				d3.select(cxD3TreeMapJsHTMLRootComponent).selectAll("#"+cxD3TreeMapJsComponentHtmlTagId+"_input").on("change", function change() {
+					var valueLabel = this.value;
+//				    alert("valueOut: " + valueOut);
+				    var value = this.value === "count"
+				        ? function() { return 1; }
+				        : function (d) { return eval("d." + valueLabel); };
+		//				        : function (d) { return d.size; };
+					  
+					    node.data(treemap.value(value).nodes)
+					      	.attr("title", function(d) { return d.children ? "" : d.tooltipName + "\n" + valueLabel + ": " + eval("d." + valueLabel); })
+					      	.transition()
+					        .duration(1500)
+					        .call(position);
+					  });
+			}
+			
+			var jsonString = this.getState().jsonData;
+			jsonTreeMapFunction(JSON.parse(jsonString));
+	}
+		''')
+	}
+	
+	def void generateCollTreeJsFile(StringBuilder strBuilder, String chartJavaFileName){
+		strBuilder.append('''«chartJavaFileName» = function() {
+	
+	var margin = {top: 20, right: 120, bottom: 20, left: 120},
+    width = 1460 - margin.right - margin.left,
+    height = 1000 - margin.top - margin.bottom;
+    
+	var i = 0,
+	    duration = 750,
+	    cxD3TreeJsComponent_jsonRoot;
+	
+	var tree = d3.layout.tree()
+	    .size([height, width]);
+	
+	var diagonal = d3.svg.diagonal()
+	    .projection(function(d) { return [d.y, d.x]; });
+	
+	var cxD3TreeJsHTMLRootComponent = this.getElement();
+	cxD3TreeJsHTMLRootComponent.innerHTML = 	
+					"<label><input id=\""+this.getState().htmlTagId+"_input\" type=\"radio\" name=\"mode\" value=\"expand\">Expand</label>\n" +
+					"<label><input id=\""+this.getState().htmlTagId+"_input\" type=\"radio\" name=\"mode\" value=\"collapse\" checked>Collapse</label>\n" +
+					"<div id=\""+this.getState().htmlTagId+"_div\">" + "</div>";	
+	
+	var cxD3TreeJsHTMLRootComponentSelection = d3.select(cxD3TreeJsHTMLRootComponent).select("#"+this.getState().htmlTagId+"_div");
+	
+	var cxD3TreeJsHTMLRootComponentSvg = cxD3TreeJsHTMLRootComponentSelection.append("svg")
+	    .attr("width", width + margin.right + margin.left)
+	    .attr("height", height + margin.top + margin.bottom)
+	  .append("g")
+	    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+
+	function collapse(d) {
+		if (d.children) {
+			d._children = d.children;
+			d._children.forEach(collapse);
+			d.children = null;
+		}
+	}
+	
+	function expand(d) {
+		if (d._children) {
+			d.children = d._children;
+			d.children.forEach(expand);
+			d._children = null;
+		}
+	}
+	
+	jsonTreeFunction = function(jsonData) {
+		cxD3TreeJsComponent_jsonRoot = jsonData;
+		cxD3TreeJsComponent_jsonRoot.x0 = height / 2;
+		cxD3TreeJsComponent_jsonRoot.y0 = 0;
+		
+		
+		  cxD3TreeJsComponent_jsonRoot.children.forEach(collapse);
+		  update(cxD3TreeJsComponent_jsonRoot);
+		}
+	
+	jsonTreeFunction(JSON.parse(this.getState().jsonData));
+
+	d3.select(cxD3TreeJsHTMLRootComponent).select(self.frameElement).style("height", "800px");
+	
+	d3.select(cxD3TreeJsHTMLRootComponent).selectAll("#"+this.getState().htmlTagId+"_input").on("change", function change() {
+//		alert("this.value = " + this.value);
+	    if (this.value === "expand"){
+	    	cxD3TreeJsComponent_jsonRoot.children.forEach(expand);
+	    } else {
+	    	cxD3TreeJsComponent_jsonRoot.children.forEach(collapse);
+	    }
+	    update(cxD3TreeJsComponent_jsonRoot);
+	});
+
+	function update(source) {
+
+	  // Compute the new tree layout.
+	  var nodes = tree.nodes(cxD3TreeJsComponent_jsonRoot).reverse(),
+	      links = tree.links(nodes);
+
+	  // Normalize for fixed-depth.
+	  nodes.forEach(function(d) { d.y = d.depth * 180; });
+
+	  // Update the nodes€¦
+	  var node = cxD3TreeJsHTMLRootComponentSvg.selectAll("g.node")
+	      .data(nodes, function(d) { return d.id || (d.id = ++i); });
+
+	  // Enter any new nodes at the parent's previous position.
+	  var nodeEnter = node.enter().append("g")
+	      .attr("class", "node")
+	      .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
+	      .on("click", click);
+
+	  nodeEnter.append("circle")
+	      .attr("r", 1e-6)
+	      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
+
+	  nodeEnter.append("text")
+	      .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
+	      .attr("dy", ".35em")
+	      .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
+	      .text(function(d) { return d.name; })
+	      .style("fill-opacity", 1e-6);
+
+	  // Transition nodes to their new position.
+	  var nodeUpdate = node.transition()
+	      .duration(duration)
+	      .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
+
+	  nodeUpdate.select("circle")
+	      .attr("r", 4.5)
+	      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
+
+	  nodeUpdate.select("text")
+	      .style("fill-opacity", 1);
+
+	  // Transition exiting nodes to the parent's new position.
+	  var nodeExit = node.exit().transition()
+	      .duration(duration)
+	      .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
+	      .remove();
+
+	  nodeExit.select("circle")
+	      .attr("r", 1e-6);
+
+	  nodeExit.select("text")
+	      .style("fill-opacity", 1e-6);
+
+	  // Update the links€¦
+	  var link = cxD3TreeJsHTMLRootComponentSvg.selectAll("path.link")
+	      .data(links, function(d) { return d.target.id; });
+
+	  // Enter any new links at the parent's previous position.
+	  link.enter().insert("path", "g")
+	      .attr("class", "link")
+	      .attr("d", function(d) {
+	        var o = {x: source.x0, y: source.y0};
+	        return diagonal({source: o, target: o});
+	      });
+
+	  // Transition links to their new position.
+	  link.transition()
+	      .duration(duration)
+	      .attr("d", diagonal);
+
+	  // Transition exiting nodes to the parent's new position.
+	  link.exit().transition()
+	      .duration(duration)
+	      .attr("d", function(d) {
+	        var o = {x: source.x, y: source.y};
+	        return diagonal({source: o, target: o});
+	      })
+	      .remove();
+
+	  // Stash the old positions for transition.
+	  nodes.forEach(function(d) {
+	    d.x0 = d.x;
+	    d.y0 = d.y;
+	  });
+	}
+
+	// Toggle children on click.
+	function click(d) {
+	  if (d.children) {
+	    d._children = d.children;
+	    d.children = null;
+	  } else {
+	    d.children = d._children;
+	    d._children = null;
+	  }
+	  update(d);
+	}
+
+}
+''')
+	}
+		
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.xtend
new file mode 100644
index 0000000..90bb03a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.xtend
@@ -0,0 +1,98 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.chart.jvmmodel
+
+import org.eclipse.osbp.xtext.chart.Chart
+import org.eclipse.osbp.xtext.chart.ChartTree
+import javax.inject.Inject
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.osbp.xtext.chart.ChartPackage
+
+class D3JsJavaUtil {
+	
+	@Inject extension IQualifiedNameProvider
+
+	def ChartTree getChartTreeMap(Chart chart){
+		if (chart.charttype instanceof ChartTree){
+			return chart.charttype as ChartTree
+		}
+		return null;
+	}	
+	
+	def String createFilenamePostFix(Chart chart){
+		if (chart.charttype instanceof ChartTree){
+			val ChartTree chartTree = chart.charttype as ChartTree
+			if (chartTree.map){
+				return "TreeMap"
+			} else if (chartTree.collapsible) {
+				return "CollapsibleTree"
+			}
+		}
+		return ""
+	}
+		
+	def boolean isTreeMap(Chart chart){
+		if (chart.charttype instanceof ChartTree){
+			val ChartTree chartTree = chart.charttype as ChartTree
+			if (chartTree.map){
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	def boolean isCollapsibleTree(Chart chart){
+		if (chart.charttype instanceof ChartTree){
+			val ChartTree chartTree = chart.charttype as ChartTree
+			if (chartTree.collapsible){
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	private def String createfullyQualifiedFilename(Chart chart){
+		var pckg = chart.eContainer as ChartPackage
+		return pckg.name.toString.concat(".").concat(chart.name.toString).concat(chart.createFilenamePostFix)
+	}
+	
+	private def String createFilename(Chart chart){
+		return chart.name.toString.concat(chart.createFilenamePostFix)
+	}
+	
+	def String createChartFilename(Chart chart){
+		return chart.createFilename.concat("JsChart")
+	}
+	
+	def String createfullyQualifiedChartFilename(Chart chart){
+		return chart.createfullyQualifiedFilename.concat("JsChart")
+	}
+	
+	def String createChartJsFilename(Chart chart){
+		return chart.createFilename.concat(".js")
+	}
+	
+	def String createfullyQualifiedStateFilename(Chart chart){
+		return chart.createfullyQualifiedFilename.concat("JsState")
+	}
+	
+	def String createStateFilename(Chart chart){
+		return chart.createFilename.concat("JsState")
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/scoping/ChartScopeProvider.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/scoping/ChartScopeProvider.xtend
new file mode 100644
index 0000000..5357f99
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/scoping/ChartScopeProvider.xtend
@@ -0,0 +1,133 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.scoping
+
+import java.util.ArrayList
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.osbp.xtext.chart.ChartDatamart
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer
+import org.eclipse.xtext.resource.EObjectDescription
+import org.eclipse.xtext.resource.IEObjectDescription
+import org.eclipse.xtext.scoping.IScope
+import org.eclipse.xtext.scoping.impl.MapBasedScope
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider
+
+class ChartScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+	
+	@Inject extension DatamartDSLJvmModelInferrer datamartInferrer
+	
+	@Override
+	override IScope getScope(EObject context, EReference reference) {
+		if (reference == ChartDSLPackage.Literals.CHART_AXIS__AXIS) {
+			return getScope_Chart_Axis_axis(context)
+		}
+		return super.getScope(context, reference)
+	}
+	
+	def IScope getScope_Chart_Axis_axis(EObject object) {
+		var result = <IEObjectDescription>newArrayList
+		var eObj = object
+		while (!(eObj instanceof ChartDatamart)) {
+			eObj = eObj.eContainer
+		}
+		if (eObj != null) {
+			var datamart = (eObj as ChartDatamart).datamartRef
+			if (datamart != null && datamart.source != null) {
+				if (datamart.source instanceof DatamartCube) {
+					for (axis : (datamart.source as DatamartCube).axisslicer) {
+						if (axis instanceof DatamartAxis) {
+							var literal = (axis as DatamartAxis).name.literal
+							result.add(EObjectDescription.create(literal, (axis as DatamartAxis)))
+						}
+					}
+				} else if (datamart.source instanceof DatamartEntity) {
+					getEntityAxes(datamart.source as DatamartEntity, result)
+				} else if (datamart.source instanceof DatamartTask) {
+					result.add(EObjectDescription.create(AxisEnum.COLUMNS.literal, (datamart.source as DatamartTask)))
+					result.add(EObjectDescription.create(AxisEnum.ROWS.literal, (datamart.source as DatamartTask)))
+				}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+	
+	def void getEntityAxes(DatamartEntity entity, ArrayList<IEObjectDescription> result) {
+		for (navigation : entity.navigations) {
+			if (navigation instanceof DatamartMember) {
+				(navigation as DatamartMember).datamartEntity.getEntityAxes(result)
+				for (property : (navigation as DatamartMember).datamartEntity.properties) {
+					result.add(EObjectDescription.create(property.axis.literal, property))
+				}
+			}
+			if (navigation instanceof DatamartOwner) {
+				(navigation as DatamartOwner).datamartEntity.getEntityAxes(result)
+				for (property : (navigation as DatamartOwner).datamartEntity.properties) {
+					result.add(EObjectDescription.create(property.axis.literal, property))
+				}
+			}
+		}
+		for (property : entity.properties) {
+			if (property.axis != null) {
+				result.add(EObjectDescription.create(property.axis.literal, property))
+			} else {
+				result.add(EObjectDescription.create(property.axis.literal, property))
+			}
+		}
+	}
+
+	def void getEntityProperties(DatamartEntity entity, ArrayList<IEObjectDescription> result, String requestedAxisName) {
+		for (navigation : entity.navigations) {
+			if (navigation instanceof DatamartMember) {
+				(navigation as DatamartMember).datamartEntity.getEntityProperties(result,requestedAxisName)
+				for (property : (navigation as DatamartMember).datamartEntity.properties) {
+					if (property.axis.literal.equals(requestedAxisName)) {
+						result.add(EObjectDescription.create(property.getPropertyName(null), property.propertyRef))
+					}
+				}
+			}
+			if (navigation instanceof DatamartOwner) {
+				(navigation as DatamartOwner).datamartEntity.getEntityProperties(result,requestedAxisName)
+				for (property : (navigation as DatamartOwner).datamartEntity.properties) {
+					if (property.axis.literal.equals(requestedAxisName)) {
+						result.add(EObjectDescription.create(property.getPropertyName(null), property.propertyRef))
+					}
+				}
+			}
+		}
+		for (property : entity.properties) {
+			if (property.axis != null) {
+				if (property.axis.literal.equals(requestedAxisName)) {
+					result.add(EObjectDescription.create(property.getPropertyName(null), property.propertyRef))
+				}
+			} else {
+				result.add(EObjectDescription.create(property.getPropertyName(null), property.propertyRef))
+			}
+		}
+	}
+}
+	
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.xtend
new file mode 100644
index 0000000..f481e8c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.xtend
@@ -0,0 +1,71 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.validation
+
+import org.eclipse.osbp.xtext.chart.Chart
+import org.eclipse.osbp.xtext.chart.ChartPackage
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage
+import org.eclipse.emf.common.util.EList
+import org.eclipse.xtext.validation.Check
+
+//import org.eclipse.xtext.validation.Check
+
+/**
+ * Custom validation rules. 
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+class ChartDSLValidator extends AbstractChartDSLValidator {
+
+//  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)
+//		}
+//	}
+
+	@Check
+	def void checkDuplicateChartNames(Chart chart){ 
+		var eObj = chart.eContainer()
+		while (!(eObj instanceof ChartPackage)) {
+			eObj = eObj.eContainer
+		}
+		if (eObj!=null){
+			var chartPackage = eObj as ChartPackage;
+			if (findDuplicateChartNames(chartPackage.charts, chart.getName()) != null){
+				error("Duplicate chart name '".concat(chart.getName()).concat("'!"), ChartDSLPackage.Literals.CHART_BASE__NAME)
+			}
+		}
+	}
+		
+	def private Chart findDuplicateChartNames(
+			EList<Chart> charts, String chartName) {
+		var tempSet = <String>newHashSet()
+		for (Chart chart : charts){
+		   if (!tempSet.add(chart.name) && (chart.name.equals(chartName))){
+			   return chart
+		   }
+		}
+		return null
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java
new file mode 100644
index 0000000..446c206
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java
@@ -0,0 +1,59 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms 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.chart.valueconverter;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+
+import com.google.inject.Inject;
+
+import org.eclipse.osbp.xtext.chart.Chart;
+
+@SuppressWarnings("restriction")
+public class ChartQualifiedNameProvider extends XbaseQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+		if (obj instanceof Chart) {
+			Chart chart = (Chart) obj;
+            if (chart.getName() == null) {
+            	return null;
+            }
+            return qualifiedNameConverter.toQualifiedName(chart.getName());
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+
+	// this method evaluates the cross referenced name of an object without causing cyclic lazy linking errors
+	private String getCrossReferenceName(EObject obj, EStructuralFeature feature) {
+		List<INode> nodes = NodeModelUtils.findNodesForFeature(obj, feature);
+		if (nodes.size() == 0) {
+			return null;
+		}
+		return NodeModelUtils.getTokenText(nodes.get(0));
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartValueConverterService.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartValueConverterService.java
new file mode 100644
index 0000000..eaf2ac8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartValueConverterService.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms 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 - Initial implementation
+ */
+package org.eclipse.osbp.xtext.chart.valueconverter;
+
+import org.eclipse.osbp.xtext.basic.valueconverter.TRANSLATABLESTRINGValueConverter;
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.xtext.xbase.conversion.XbaseValueConverterService;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * Adds a value conversion for the QualifiedNameWithWildCard rule.
+ * 
+ */
+@SuppressWarnings("restriction")
+@Singleton
+public class ChartValueConverterService extends XbaseValueConverterService {
+	@Inject
+	private TRANSLATABLESTRINGValueConverter converter;
+
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+	@ValueConverter(rule = "TRANSLATABLESTRING")
+	public IValueConverter<String> getTranslatableStringValueConverter() {
+		return converter;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java
new file mode 100644
index 0000000..4effda1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.chart.formatting;
+
+import com.google.inject.Inject;
+import org.eclipse.osbp.utils.xtext.GenericFormatter;
+import org.eclipse.xtext.Grammar;
+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 ChartDSLFormatter extends AbstractDeclarativeFormatter {
+  @Inject
+  private XtypeGrammarAccess grammarAccess;
+  
+  protected void configureFormatting(final FormattingConfig c) {
+    final GenericFormatter genericFormatter = new GenericFormatter();
+    Grammar _grammar = this.grammar.getGrammar();
+    genericFormatter.formatFirstLevelBlocks(c, _grammar, "Chart", "ChartImport");
+    genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java
new file mode 100644
index 0000000..964142c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.chart.jvmmodel;
+
+import com.vaadin.annotations.JavaScript;
+import com.vaadin.shared.ui.JavaScriptComponentState;
+import com.vaadin.ui.AbstractJavaScriptComponent;
+import java.util.ArrayList;
+import java.util.List;
+import javax.inject.Inject;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.osbp.xtext.chart.jvmmodel.D3JsJavaUtil;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmAnnotationValue;
+import org.eclipse.xtext.common.types.JvmConstructor;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmField;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.JvmMember;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.JvmStringAnnotationValue;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+
+@SuppressWarnings("all")
+public class ChartDSLD3JavaComponentsCreator {
+  @Inject
+  @Extension
+  private JvmTypesBuilder _jvmTypesBuilder;
+  
+  @Inject
+  @Extension
+  private D3JsJavaUtil _d3JsJavaUtil;
+  
+  @Inject
+  private TypesFactory typesFactory;
+  
+  public void createJsJavaComponent(final Chart chart, final IJvmDeclaredTypeAcceptor acceptor) {
+    final String stateClassName = this._d3JsJavaUtil.createStateFilename(chart);
+    String _createfullyQualifiedChartFilename = this._d3JsJavaUtil.createfullyQualifiedChartFilename(chart);
+    JvmGenericType chart_cls = this._jvmTypesBuilder.toClass(chart, _createfullyQualifiedChartFilename);
+    this._jvmTypesBuilder.setDocumentation(chart_cls, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+    String _createfullyQualifiedStateFilename = this._d3JsJavaUtil.createfullyQualifiedStateFilename(chart);
+    JvmGenericType state_cls = this._jvmTypesBuilder.toClass(chart, _createfullyQualifiedStateFilename);
+    this._jvmTypesBuilder.setDocumentation(state_cls, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      final ChartTree chartTree = ((ChartTree) _charttype_1);
+      IJvmDeclaredTypeAcceptor.IPostIndexingInitializing<JvmGenericType> _accept = acceptor.<JvmGenericType>accept(chart_cls);
+      final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
+        public void apply(final JvmGenericType it) {
+          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+          JvmTypeReference _newTypeRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, AbstractJavaScriptComponent.class);
+          ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _newTypeRef);
+          JvmAnnotationReference jsAnnotationRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toAnnotation(chartTree, JavaScript.class);
+          String _createChartJsFilename = ChartDSLD3JavaComponentsCreator.this._d3JsJavaUtil.createChartJsFilename(chart);
+          ArrayList<String> jsAnnotationList = CollectionLiterals.<String>newArrayList("d3.min.js", _createChartJsFilename);
+          ChartDSLD3JavaComponentsCreator.this.addStringValuesToAnnotation(jsAnnotationRef, jsAnnotationList);
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, jsAnnotationRef);
+          boolean _isMap = chartTree.isMap();
+          if (_isMap) {
+            ChartDSLD3JavaComponentsCreator.this.toTreeMapConstructor(it, chart);
+          } else {
+            boolean _isCollapsible = chartTree.isCollapsible();
+            if (_isCollapsible) {
+              ChartDSLD3JavaComponentsCreator.this.toChartConstructor(it, chart);
+            }
+          }
+          ChartDSLD3JavaComponentsCreator.this.toChartOperations(it, chart, stateClassName);
+        }
+      };
+      _accept.initializeLater(_function);
+      IJvmDeclaredTypeAcceptor.IPostIndexingInitializing<JvmGenericType> _accept_1 = acceptor.<JvmGenericType>accept(state_cls);
+      final Procedure1<JvmGenericType> _function_1 = new Procedure1<JvmGenericType>() {
+        public void apply(final JvmGenericType it) {
+          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+          JvmTypeReference _newTypeRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, JavaScriptComponentState.class);
+          ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _newTypeRef);
+          boolean _isMap = chartTree.isMap();
+          if (_isMap) {
+            ChartDSLD3JavaComponentsCreator.this.toTreeMapStateFields(it, chart);
+          } else {
+            boolean _isCollapsible = chartTree.isCollapsible();
+            if (_isCollapsible) {
+              ChartDSLD3JavaComponentsCreator.this.toChartStateFields(it, chart);
+            }
+          }
+        }
+      };
+      _accept_1.initializeLater(_function_1);
+    }
+  }
+  
+  public void toChartOperations(final JvmDeclaredType type, final Chart chart, final String stateClassName) {
+    EList<JvmMember> _members = type.getMembers();
+    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, stateClassName);
+    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return (");
+            _builder.append(stateClassName, "");
+            _builder.append(") super.getState();");
+            it.append(_builder);
+          }
+        };
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(chart, "getState", _newTypeRef, _function);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+  }
+  
+  public CharSequence getD3StateVars() {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("getState().jsonData = _jsonData;");
+    _builder.newLine();
+    _builder.append("getState().htmlTagId=_htmlTagId;");
+    return _builder;
+  }
+  
+  public JvmConstructor getChartConstructor(final JvmDeclaredType type, final Chart chart) {
+    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
+      public void apply(final JvmConstructor it) {
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _newTypeRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, String.class);
+        JvmFormalParameter _parameter = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(chart, "_htmlTagId", _newTypeRef);
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+        JvmTypeReference _newTypeRef_1 = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, String.class);
+        JvmFormalParameter _parameter_1 = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(chart, "_jsonData", _newTypeRef_1);
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            CharSequence _d3StateVars = ChartDSLD3JavaComponentsCreator.this.getD3StateVars();
+            it.append(_d3StateVars);
+          }
+        };
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    return this._jvmTypesBuilder.toConstructor(chart, _function);
+  }
+  
+  public void toTreeMapConstructor(final JvmDeclaredType type, final Chart chart) {
+    JvmConstructor constructor = this.getChartConstructor(type, chart);
+    EList<JvmFormalParameter> _parameters = constructor.getParameters();
+    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, String.class);
+    JvmTypeReference _newTypeRef_1 = this._jvmTypesBuilder.newTypeRef(chart, List.class, _newTypeRef);
+    JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "dataColumns", _newTypeRef_1);
+    this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+    final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+      public void apply(final ITreeAppendable it) {
+        StringConcatenation _builder = new StringConcatenation();
+        CharSequence _d3StateVars = ChartDSLD3JavaComponentsCreator.this.getD3StateVars();
+        _builder.append(_d3StateVars, "");
+        _builder.newLineIfNotEmpty();
+        _builder.append("getState().dataColumnList = dataColumns;");
+        it.append(_builder);
+      }
+    };
+    this._jvmTypesBuilder.setBody(constructor, _function);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, constructor);
+  }
+  
+  public void toChartConstructor(final JvmDeclaredType type, final Chart chart) {
+    JvmConstructor constructor = this.getChartConstructor(type, chart);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, constructor);
+  }
+  
+  public void addStringValuesToAnnotation(final JvmAnnotationReference annotationRef, final ArrayList<String> annotationStringList) {
+    JvmStringAnnotationValue value = this.typesFactory.createJvmStringAnnotationValue();
+    for (final String annotationString : annotationStringList) {
+      EList<String> _values = value.getValues();
+      this._jvmTypesBuilder.<String>operator_add(_values, annotationString);
+    }
+    EList<JvmAnnotationValue> _explicitValues = annotationRef.getExplicitValues();
+    this._jvmTypesBuilder.<JvmStringAnnotationValue>operator_add(_explicitValues, value);
+  }
+  
+  public void toTreeMapStateFields(final JvmDeclaredType type, final Chart chart) {
+    this.toChartStateFields(type, chart);
+    EList<JvmMember> _members = type.getMembers();
+    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, String.class);
+    JvmTypeReference _newTypeRef_1 = this._jvmTypesBuilder.newTypeRef(chart, List.class, _newTypeRef);
+    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("new ArrayList<String>()");
+            it.append(_builder);
+          }
+        };
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(chart, "dataColumnList", _newTypeRef_1, _function);
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, _field);
+  }
+  
+  public void toChartStateFields(final JvmDeclaredType type, final Chart chart) {
+    EList<JvmMember> _members = type.getMembers();
+    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, String.class);
+    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("\"\"");
+            it.append(_builder);
+          }
+        };
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(chart, "jsonData", _newTypeRef, _function);
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, _field);
+    EList<JvmMember> _members_1 = type.getMembers();
+    JvmTypeReference _newTypeRef_1 = this._jvmTypesBuilder.newTypeRef(chart, String.class);
+    final Procedure1<JvmField> _function_1 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("\"\"");
+            it.append(_builder);
+          }
+        };
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field_1 = this._jvmTypesBuilder.toField(chart, "htmlTagId", _newTypeRef_1, _function_1);
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, _field_1);
+    EList<JvmMember> _members_2 = type.getMembers();
+    JvmTypeReference _newTypeRef_2 = this._jvmTypesBuilder.newTypeRef(chart, String.class);
+    final Procedure1<JvmField> _function_2 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("\"\"");
+            it.append(_builder);
+          }
+        };
+        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field_2 = this._jvmTypesBuilder.toField(chart, "inputValue", _newTypeRef_2, _function_2);
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_2, _field_2);
+  }
+  
+  public CharSequence createD3Chart(final Chart chart) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("CellSetToD3JsonConverter jsonConverter = new CellSetToD3JsonConverter();");
+    _builder.newLine();
+    _builder.append("return new ");
+    final String d3ChartFileName = this._d3JsJavaUtil.createChartFilename(chart);
+    _builder.append(d3ChartFileName, "");
+    _builder.append("(\"");
+    _builder.append(d3ChartFileName, "");
+    _builder.append("\", jsonConverter.getD3JsonString(cxCellSet)");
+    {
+      boolean _isTreeMap = this._d3JsJavaUtil.isTreeMap(chart);
+      if (_isTreeMap) {
+        _builder.append(", jsonConverter.getDataColumnNameList(cxCellSet)");
+      }
+    }
+    _builder.append(");");
+    return _builder;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java
new file mode 100644
index 0000000..b918ae4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java
@@ -0,0 +1,2998 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms 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.chart.jvmmodel;
+
+import com.github.wolfie.refresher.Refresher;
+import com.google.common.base.Objects;
+import com.vaadin.data.Property;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+import elemental.json.JsonException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Set;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import org.dussan.vaadin.dcharts.DCharts;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.osgi.hybrid.api.AbstractHybridVaaclipseView;
+import org.eclipse.osbp.ui.api.datamart.DerivedOlapException;
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator;
+import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.user.IUser;
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.utils.theme.EnumCssClass;
+import org.eclipse.osbp.utils.vaadin.PropertyLookup;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartAxis;
+import org.eclipse.osbp.xtext.chart.ChartBar;
+import org.eclipse.osbp.xtext.chart.ChartBubble;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.chart.ChartDonut;
+import org.eclipse.osbp.xtext.chart.ChartElement;
+import org.eclipse.osbp.xtext.chart.ChartGauge;
+import org.eclipse.osbp.xtext.chart.ChartHighlighter;
+import org.eclipse.osbp.xtext.chart.ChartInterval;
+import org.eclipse.osbp.xtext.chart.ChartLegend;
+import org.eclipse.osbp.xtext.chart.ChartLine;
+import org.eclipse.osbp.xtext.chart.ChartNumberInterval;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.chart.ChartPie;
+import org.eclipse.osbp.xtext.chart.ChartRangeElement;
+import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.osbp.xtext.chart.LegendPlacementEnum;
+import org.eclipse.osbp.xtext.chart.RenderTypeEnum;
+import org.eclipse.osbp.xtext.chart.ToggleTypeEnum;
+import org.eclipse.osbp.xtext.chart.TooltipLocationEnum;
+import org.eclipse.osbp.xtext.chart.jvmmodel.ChartDSLD3JavaComponentsCreator;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet;
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum;
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmConstructor;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmField;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.JvmMember;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+import org.osgi.service.event.EventHandler;
+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 ChartDSLJvmModelInferrer extends AbstractModelInferrer {
+  @Inject
+  @Extension
+  private JvmTypesBuilder _jvmTypesBuilder;
+  
+  @Inject
+  @Extension
+  private IQualifiedNameProvider _iQualifiedNameProvider;
+  
+  @Inject
+  @Extension
+  private DatamartDSLJvmModelInferrer datamartInferrer;
+  
+  @Inject
+  @Extension
+  private ChartDSLD3JavaComponentsCreator _chartDSLD3JavaComponentsCreator;
+  
+  /**
+   * <p>infer method dispatches the necessary routines to build fields, setter, getter, constructors and methods of the generated code.</p>
+   */
+  protected void _infer(final ChartPackage pckg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    EList<Chart> _charts = pckg.getCharts();
+    for (final Chart chart : _charts) {
+      {
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pckg);
+        String _plus = (_fullyQualifiedName + ".");
+        String _name = chart.getName();
+        String _plus_1 = (_plus + _name);
+        String _plus_2 = (_plus_1 + "Chart");
+        JvmGenericType cls = this._jvmTypesBuilder.toClass(chart, _plus_2);
+        EList<JvmTypeReference> _superTypes = cls.getSuperTypes();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(AbstractHybridVaaclipseView.class);
+        _superTypes.add(_typeRef);
+        EList<JvmTypeReference> _superTypes_1 = cls.getSuperTypes();
+        JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IUser.UserLocaleListener.class);
+        _superTypes_1.add(_typeRef_1);
+        final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
+          public void apply(final JvmGenericType it) {
+            ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+            ChartDSLJvmModelInferrer.this.toFields(it, chart);
+            ChartDSLJvmModelInferrer.this.toConstructor(it, chart);
+            ChartDSLJvmModelInferrer.this.toGetterSetter(it, chart);
+            ChartDSLJvmModelInferrer.this.toOperations(it, chart);
+          }
+        };
+        acceptor.<JvmGenericType>accept(cls, _function);
+        ChartOption _charttype = chart.getCharttype();
+        if ((_charttype instanceof ChartTree)) {
+          this._chartDSLD3JavaComponentsCreator.createJsJavaComponent(chart, acceptor);
+        }
+      }
+    }
+  }
+  
+  /**
+   * <p>build the constructors to be used by an e4 application.</p>
+   */
+  public void toConstructor(final JvmDeclaredType type, final Chart chart) {
+    EList<JvmMember> _members = type.getMembers();
+    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
+      public void apply(final JvmConstructor it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(VerticalLayout.class);
+        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "parent", _typeRef);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+        JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IEclipseContext.class);
+        JvmFormalParameter _parameter_1 = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "context", _typeRef_1);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+        JvmTypeReference _typeRef_2 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(MApplication.class);
+        JvmFormalParameter _parameter_2 = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "app", _typeRef_2);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("super(parent,context,app);");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(chart, _function);
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
+  }
+  
+  /**
+   * <p>build the class variables.</p>
+   */
+  public void toFields(final JvmDeclaredType type, final Chart chart) {
+    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(\"charts\")");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(chart, "log", _typeRef, _function);
+    field = _field;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IUser.class);
+    final Procedure1<JvmField> _function_1 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      }
+    };
+    JvmField _field_1 = this._jvmTypesBuilder.toField(chart, "user", _typeRef_1, _function_1);
+    field = _field_1;
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IEclipseContext.class);
+    final Procedure1<JvmField> _function_2 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      }
+    };
+    JvmField _field_2 = this._jvmTypesBuilder.toField(chart, "eclipseContext", _typeRef_2, _function_2);
+    field = _field_2;
+    EList<JvmMember> _members_2 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Integer.class);
+    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_3);
+    JvmField _field_3 = this._jvmTypesBuilder.toField(chart, "coordinateSystem", _typeRef_4);
+    field = _field_3;
+    EList<JvmMember> _members_3 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
+    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(IDatamartFilterGenerator.class);
+    JvmField _field_4 = this._jvmTypesBuilder.toField(chart, "filterGenerator", _typeRef_5);
+    field = _field_4;
+    EList<JvmMember> _members_4 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
+    JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(IViewLayoutManager.class);
+    JvmField _field_5 = this._jvmTypesBuilder.toField(chart, "layoutManager", _typeRef_6);
+    field = _field_5;
+    EList<JvmMember> _members_5 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
+    String _sourceDataMartRefName = this.getSourceDataMartRefName(chart);
+    boolean _notEquals = (!Objects.equal(_sourceDataMartRefName, null));
+    if (_notEquals) {
+      ChartDatamart _source = chart.getSource();
+      DatamartDefinition _datamartRef = _source.getDatamartRef();
+      EObject _eContainer = _datamartRef.eContainer();
+      QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer));
+      String packageName = _fullyQualifiedName.toString();
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(packageName, "");
+      _builder.append(".");
+      ChartDatamart _source_1 = chart.getSource();
+      DatamartDefinition _datamartRef_1 = _source_1.getDatamartRef();
+      String _name = _datamartRef_1.getName();
+      String _string = _name.toString();
+      _builder.append(_string, "");
+      _builder.append("Datamart");
+      JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(_builder.toString());
+      JvmField _field_6 = this._jvmTypesBuilder.toField(chart, "datamartClass", _typeRef_7);
+      field = _field_6;
+      EList<JvmMember> _members_6 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field);
+    }
+    JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(Property.ValueChangeListener.class);
+    JvmField _field_7 = this._jvmTypesBuilder.toField(chart, "filterChangeListener", _typeRef_8);
+    field = _field_7;
+    EList<JvmMember> _members_7 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field);
+    JvmTypeReference _typeRef_9 = this._typeReferenceBuilder.typeRef(Refresher.class);
+    JvmField _field_8 = this._jvmTypesBuilder.toField(chart, "chartRefresher", _typeRef_9);
+    field = _field_8;
+    EList<JvmMember> _members_8 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field);
+    JvmTypeReference _typeRef_10 = this._typeReferenceBuilder.typeRef(boolean.class);
+    JvmField _field_9 = this._jvmTypesBuilder.toField(chart, "chartRefresherDone", _typeRef_10);
+    field = _field_9;
+    EList<JvmMember> _members_9 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_9, field);
+    JvmTypeReference _typeRef_11 = this._typeReferenceBuilder.typeRef(Refresher.class);
+    JvmField _field_10 = this._jvmTypesBuilder.toField(chart, "chartRenderDelay", _typeRef_11);
+    field = _field_10;
+    EList<JvmMember> _members_10 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_10, field);
+    JvmTypeReference _typeRef_12 = this._typeReferenceBuilder.typeRef(Component.class);
+    JvmField _field_11 = this._jvmTypesBuilder.toField(chart, "dataComponent", _typeRef_12);
+    field = _field_11;
+    EList<JvmMember> _members_11 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_11, field);
+    JvmTypeReference _typeRef_13 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_14 = this._typeReferenceBuilder.typeRef(PropertyLookup.class);
+    JvmTypeReference _typeRef_15 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_13, _typeRef_14);
+    JvmField _field_12 = this._jvmTypesBuilder.toField(chart, "propertyLookupMap", _typeRef_15);
+    field = _field_12;
+    EList<JvmMember> _members_12 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_12, field);
+    JvmTypeReference _typeRef_16 = this._typeReferenceBuilder.typeRef(DCharts.class);
+    JvmTypeReference _typeRef_17 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_16);
+    JvmField _field_13 = this._jvmTypesBuilder.toField(chart, "charts", _typeRef_17);
+    field = _field_13;
+    EList<JvmMember> _members_13 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_13, field);
+    JvmTypeReference _typeRef_18 = this._typeReferenceBuilder.typeRef(IEventBroker.class);
+    final Procedure1<JvmField> _function_3 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      }
+    };
+    JvmField _field_14 = this._jvmTypesBuilder.toField(chart, "eventBroker", _typeRef_18, _function_3);
+    field = _field_14;
+    EList<JvmMember> _members_14 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_14, field);
+    JvmTypeReference _typeRef_19 = this._typeReferenceBuilder.typeRef(EventHandler.class);
+    JvmField _field_15 = this._jvmTypesBuilder.toField(chart, "refreshView", _typeRef_19);
+    field = _field_15;
+    EList<JvmMember> _members_15 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_15, field);
+    JvmTypeReference _typeRef_20 = this._typeReferenceBuilder.typeRef(IDSLMetadataService.class);
+    final Procedure1<JvmField> _function_4 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      }
+    };
+    JvmField _field_16 = this._jvmTypesBuilder.toField(chart, "dslMetadataService", _typeRef_20, _function_4);
+    field = _field_16;
+    EList<JvmMember> _members_16 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_16, field);
+    JvmTypeReference _typeRef_21 = this._typeReferenceBuilder.typeRef(Locale.class);
+    JvmField _field_17 = this._jvmTypesBuilder.toField(chart, "locale", _typeRef_21);
+    field = _field_17;
+    EList<JvmMember> _members_17 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_17, field);
+  }
+  
+  /**
+   * <p>build the getters and setters from class variables.</p>
+   */
+  public void toGetterSetter(final JvmDeclaredType type, final Chart chart) {
+    JvmOperation operation = null;
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Integer.class);
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef);
+    JvmOperation _getter = this._jvmTypesBuilder.toGetter(chart, "coordinateSystem", _typeRef_1);
+    operation = _getter;
+    operation.setVisibility(JvmVisibility.PUBLIC);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+  }
+  
+  /**
+   * <p>build the methods.</p>
+   */
+  public void toOperations(final JvmDeclaredType type, final Chart chart) {
+    EList<JvmMember> _members = type.getMembers();
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(VerticalLayout.class);
+        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "parent", _typeRef);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            String _createView = ChartDSLJvmModelInferrer.this.createView(chart);
+            _builder.append(_createView, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(chart, "createView", _typeRef, _function);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+    EList<JvmMember> _members_1 = type.getMembers();
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            String _createComponents = ChartDSLJvmModelInferrer.this.createComponents(chart);
+            _builder.append(_createComponents, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(chart, "createComponents", _typeRef_1, _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+    EList<JvmMember> _members_2 = type.getMembers();
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Component.class);
+    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedOlapException.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "cellSet", _typeRef_1);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+        JvmTypeReference _typeRef_2 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Integer.class);
+        JvmFormalParameter _parameter_1 = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "axisNo", _typeRef_2);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            String _createTabSheet = ChartDSLJvmModelInferrer.this.createTabSheet(chart);
+            _builder.append(_createTabSheet, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(chart, "createTabSheet", _typeRef_2, _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
+    ChartOption _charttype = chart.getCharttype();
+    if ((!(_charttype instanceof ChartTree))) {
+      EList<JvmMember> _members_3 = type.getMembers();
+      JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Component.class);
+      final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmTypeReference> _exceptions = it.getExceptions();
+          JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedOlapException.class);
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+          JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "cellSet", _typeRef_1);
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              String _createChart = ChartDSLJvmModelInferrer.this.createChart(chart);
+              _builder.append(_createChart, "");
+              it.append(_builder);
+            }
+          };
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(chart, "createChart", _typeRef_3, _function_3);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
+    }
+    ChartOption _charttype_1 = chart.getCharttype();
+    if ((_charttype_1 instanceof ChartTree)) {
+      EList<JvmMember> _members_4 = type.getMembers();
+      JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(Component.class);
+      final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmTypeReference> _exceptions = it.getExceptions();
+          JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedOlapException.class);
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+          EList<JvmTypeReference> _exceptions_1 = it.getExceptions();
+          JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(JsonException.class);
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions_1, _typeRef_1);
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef_2 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+          JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "cxCellSet", _typeRef_2);
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              CharSequence _createD3Chart = ChartDSLJvmModelInferrer.this._chartDSLD3JavaComponentsCreator.createD3Chart(chart);
+              _builder.append(_createD3Chart, "");
+              it.append(_builder);
+            }
+          };
+          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(chart, "createD3Chart", _typeRef_4, _function_4);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+    }
+    EList<JvmMember> _members_5 = type.getMembers();
+    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_5 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PROTECTED);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(PostConstruct.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            String _setup = ChartDSLJvmModelInferrer.this.setup(chart);
+            _builder.append(_setup, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(chart, "setup", _typeRef_5, _function_5);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
+    EList<JvmMember> _members_6 = type.getMembers();
+    JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_6 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PROTECTED);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            CharSequence _subscribe = ChartDSLJvmModelInferrer.this.subscribe(chart);
+            _builder.append(_subscribe, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(chart, "subscribe", _typeRef_6, _function_6);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
+    EList<JvmMember> _members_7 = type.getMembers();
+    JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_7 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PROTECTED);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(PreDestroy.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            CharSequence _unsubscribe = ChartDSLJvmModelInferrer.this.unsubscribe(chart);
+            _builder.append(_unsubscribe, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(chart, "unsubscribe", _typeRef_7, _function_7);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
+    EList<JvmMember> _members_8 = type.getMembers();
+    JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_8 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Locale.class);
+        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "locale", _typeRef);
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            CharSequence _localeChanged = ChartDSLJvmModelInferrer.this.localeChanged(chart);
+            _builder.append(_localeChanged, "");
+            it.append(_builder);
+          }
+        };
+        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(chart, "localeChanged", _typeRef_8, _function_8);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
+  }
+  
+  public CharSequence subscribe(final Chart chart) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("eventBroker.subscribe(EventBrokerMsg.REFRESH_VIEW+\"");
+    String _name = chart.getName();
+    _builder.append(_name, "");
+    _builder.append("Chart\", refreshView);");
+    return _builder;
+  }
+  
+  public CharSequence unsubscribe(final Chart chart) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("eventBroker.unsubscribe(refreshView);");
+    return _builder;
+  }
+  
+  public String getSourceDataMartRefName(final Chart chart) {
+    boolean _and = false;
+    boolean _and_1 = false;
+    ChartDatamart _source = chart.getSource();
+    boolean _notEquals = (!Objects.equal(_source, null));
+    if (!_notEquals) {
+      _and_1 = false;
+    } else {
+      ChartDatamart _source_1 = chart.getSource();
+      DatamartDefinition _datamartRef = _source_1.getDatamartRef();
+      boolean _notEquals_1 = (!Objects.equal(_datamartRef, null));
+      _and_1 = _notEquals_1;
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      ChartDatamart _source_2 = chart.getSource();
+      DatamartDefinition _datamartRef_1 = _source_2.getDatamartRef();
+      String _name = _datamartRef_1.getName();
+      boolean _notEquals_2 = (!Objects.equal(_name, null));
+      _and = _notEquals_2;
+    }
+    if (_and) {
+      ChartDatamart _source_3 = chart.getSource();
+      DatamartDefinition _datamartRef_2 = _source_3.getDatamartRef();
+      String _name_1 = _datamartRef_2.getName();
+      return _name_1.toString();
+    } else {
+      return null;
+    }
+  }
+  
+  /**
+   * <p>build the main method to be called from e4.</p>
+   */
+  public String createView(final Chart chart) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("chartRefresherDone = false;");
+    _builder.newLine();
+    _builder.append("charts = new ArrayList<DCharts>();");
+    _builder.newLine();
+    _builder.append("coordinateSystem = new ArrayList<Integer>();");
+    _builder.newLine();
+    _builder.append("filterGenerator = new DatamartFilterGenerator();");
+    _builder.newLine();
+    _builder.append("filterGenerator.setDslMetadataService(dslMetadataService);");
+    _builder.newLine();
+    _builder.append("layoutManager = new ViewLayoutManager();");
+    _builder.newLine();
+    _builder.append("chartRefresher = new Refresher();");
+    _builder.newLine();
+    _builder.append("chartRenderDelay = new Refresher();");
+    _builder.newLine();
+    _builder.append("propertyLookupMap = new HashMap<String,PropertyLookup>();");
+    _builder.newLine();
+    String body = _builder.toString();
+    String _sourceDataMartRefName = this.getSourceDataMartRefName(chart);
+    boolean _notEquals = (!Objects.equal(_sourceDataMartRefName, null));
+    if (_notEquals) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body, "");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("datamartClass = new ");
+      String _sourceDataMartRefName_1 = this.getSourceDataMartRefName(chart);
+      _builder_1.append(_sourceDataMartRefName_1, "");
+      _builder_1.append("Datamart();");
+      body = _builder_1.toString();
+    }
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append(body, "");
+    _builder_2.newLineIfNotEmpty();
+    _builder_2.append("parent.setPrimaryStyleName(\"osbp\"); // <== is THIS necessary any more???");
+    _builder_2.newLine();
+    _builder_2.append("parent.addStyleName(\"");
+    String _styleName = EnumCssClass.VIEW.styleName();
+    _builder_2.append(_styleName, "");
+    _builder_2.append("\");");
+    _builder_2.newLineIfNotEmpty();
+    _builder_2.append("parent.addStyleName(\"");
+    String _styleName_1 = EnumCssClass.CHART_VIEW.styleName();
+    _builder_2.append(_styleName_1, "");
+    _builder_2.append("\");");
+    _builder_2.newLineIfNotEmpty();
+    _builder_2.append("parent.setSizeFull();");
+    _builder_2.newLine();
+    _builder_2.append("layoutManager.init(parent);");
+    _builder_2.newLine();
+    _builder_2.append("refreshView = ");
+    String _refreshView = this.refreshView(chart);
+    _builder_2.append(_refreshView, "");
+    _builder_2.newLineIfNotEmpty();
+    body = _builder_2.toString();
+    StringConcatenation _builder_3 = new StringConcatenation();
+    _builder_3.append(body, "");
+    _builder_3.newLineIfNotEmpty();
+    _builder_3.append("chartRenderDelay.setRefreshInterval(100);");
+    _builder_3.newLine();
+    _builder_3.append("chartRenderDelay.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("@Override");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("public void refresh(final Refresher source) {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("// refresh only once");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("layoutManager.removeExtension(source);");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("log.debug(\"initial - show delayed\");");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("for(DCharts chart : charts) {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("chart.show();");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("chartRefresherDone = true;");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("});");
+    _builder_3.newLine();
+    _builder_3.append("layoutManager.addExtension(chartRenderDelay);");
+    _builder_3.newLine();
+    _builder_3.append("user.addUserLocaleListener(this);");
+    _builder_3.newLine();
+    body = _builder_3.toString();
+    boolean _isPolling = chart.isPolling();
+    if (_isPolling) {
+      StringConcatenation _builder_4 = new StringConcatenation();
+      _builder_4.append(body, "");
+      _builder_4.newLineIfNotEmpty();
+      _builder_4.append("chartRefresher.setRefreshInterval(");
+      int _pollingTime = chart.getPollingTime();
+      _builder_4.append(_pollingTime, "");
+      _builder_4.append("*1000);");
+      _builder_4.newLineIfNotEmpty();
+      _builder_4.append("chartRefresher.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {");
+      _builder_4.newLine();
+      _builder_4.append("\t");
+      _builder_4.append("@Override");
+      _builder_4.newLine();
+      _builder_4.append("\t");
+      _builder_4.append("public void refresh(final Refresher source) {");
+      _builder_4.newLine();
+      _builder_4.append("\t\t");
+      _builder_4.append("renderData();");
+      _builder_4.newLine();
+      _builder_4.append("\t");
+      _builder_4.append("}");
+      _builder_4.newLine();
+      _builder_4.append("});");
+      _builder_4.newLine();
+      _builder_4.append("layoutManager.addExtension(chartRefresher);");
+      _builder_4.newLine();
+      body = _builder_4.toString();
+    }
+    ChartDatamart _source = chart.getSource();
+    boolean _notEquals_1 = (!Objects.equal(_source, null));
+    if (_notEquals_1) {
+      StringConcatenation _builder_5 = new StringConcatenation();
+      _builder_5.append(body, "");
+      _builder_5.newLineIfNotEmpty();
+      _builder_5.append("filterChangeListener = new ValueChangeListener() {");
+      _builder_5.newLine();
+      _builder_5.append("\t");
+      _builder_5.append("@Override");
+      _builder_5.newLine();
+      _builder_5.append("\t");
+      _builder_5.append("public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {");
+      _builder_5.newLine();
+      _builder_5.append("\t\t");
+      _builder_5.append("renderData();");
+      _builder_5.newLine();
+      _builder_5.append("\t");
+      _builder_5.append("}");
+      _builder_5.newLine();
+      _builder_5.append("};");
+      _builder_5.newLine();
+      _builder_5.append("filterGenerator.createFilter(datamartClass, user, filterChangeListener, layoutManager);");
+      _builder_5.newLine();
+      body = _builder_5.toString();
+    }
+    StringConcatenation _builder_6 = new StringConcatenation();
+    _builder_6.append(body, "");
+    _builder_6.append("// to resize the chart according to browser");
+    _builder_6.newLineIfNotEmpty();
+    _builder_6.append("Page.getCurrent().addBrowserWindowResizeListener(new BrowserWindowResizeListener() {");
+    _builder_6.newLine();
+    _builder_6.append("\t");
+    _builder_6.append("@Override");
+    _builder_6.newLine();
+    _builder_6.append("\t");
+    _builder_6.append("public void browserWindowResized(BrowserWindowResizeEvent event) {");
+    _builder_6.newLine();
+    _builder_6.append("\t\t");
+    _builder_6.append("log.debug(\"browserWindowResized - mark dirty\");");
+    _builder_6.newLine();
+    _builder_6.append("\t\t");
+    _builder_6.append("getParent().markAsDirtyRecursive();");
+    _builder_6.newLine();
+    _builder_6.append("\t");
+    _builder_6.append("}");
+    _builder_6.newLine();
+    _builder_6.append("});");
+    _builder_6.newLine();
+    _builder_6.append("// to resize the chart according to split positions of partsashcontainer - setContainerData is tracked");
+    _builder_6.newLine();
+    _builder_6.append("EObject container = ((EObject)eclipseContext.get(MUIElement.class)).eContainer();");
+    _builder_6.newLine();
+    _builder_6.append("if(!(container instanceof MPartStack)) {");
+    _builder_6.newLine();
+    _builder_6.append("\t");
+    _builder_6.append("container = (EObject)eclipseContext.get(MUIElement.class);");
+    _builder_6.newLine();
+    _builder_6.append("}");
+    _builder_6.newLine();
+    _builder_6.append("container.eAdapters().add(new AdapterImpl() {");
+    _builder_6.newLine();
+    _builder_6.append("\t");
+    _builder_6.append("public void notifyChanged(Notification notification) {");
+    _builder_6.newLine();
+    _builder_6.append("\t\t");
+    _builder_6.append("if (notification.getEventType()==Notification.SET && ");
+    _builder_6.newLine();
+    _builder_6.append("\t\t\t\t");
+    _builder_6.append("notification.getFeatureID(UIElementImpl.class) == UiPackageImpl.UI_ELEMENT__CONTAINER_DATA)");
+    _builder_6.newLine();
+    _builder_6.append("\t\t");
+    _builder_6.append("{");
+    _builder_6.newLine();
+    _builder_6.append("\t\t\t");
+    _builder_6.append("log.debug(\"split position changed - mark dirty\");");
+    _builder_6.newLine();
+    _builder_6.append("\t\t\t");
+    _builder_6.append("getParent().markAsDirtyRecursive();");
+    _builder_6.newLine();
+    _builder_6.append("\t\t");
+    _builder_6.append("}");
+    _builder_6.newLine();
+    _builder_6.append("\t");
+    _builder_6.append("}");
+    _builder_6.newLine();
+    _builder_6.append("});");
+    _builder_6.newLine();
+    body = _builder_6.toString();
+    return body;
+  }
+  
+  /**
+   * <p>create a handler for external triggered refresh requests.</p>
+   */
+  public String refreshView(final Chart chart) {
+    String body = "";
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(body, "");
+    _builder.newLineIfNotEmpty();
+    _builder.append("new EventHandler() {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("@Override");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("public void handleEvent(Event event) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("renderData();");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("};");
+    _builder.newLine();
+    body = _builder.toString();
+    return body;
+  }
+  
+  /**
+   * <p>build the data components.</p>
+   */
+  public String createComponents(final Chart chart) {
+    String body = "";
+    ChartDatamart _source = chart.getSource();
+    boolean _notEquals = (!Objects.equal(_source, null));
+    if (_notEquals) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(body, "");
+      _builder.append("// get the results");
+      _builder.newLineIfNotEmpty();
+      _builder.append("try {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("final DerivedCellSet cellSet = datamartClass.getResults(user, filterGenerator.getFilter(");
+      ChartDatamart _source_1 = chart.getSource();
+      DatamartDefinition _datamartRef = _source_1.getDatamartRef();
+      DatamartSource _source_2 = _datamartRef.getSource();
+      boolean _booleanValue = Boolean.valueOf((_source_2 instanceof DatamartCube)).booleanValue();
+      String _string = Boolean.valueOf(_booleanValue).toString();
+      _builder.append(_string, "\t");
+      _builder.append("), getTaskOperativeDtoClass(), getTaskInitialOperativeDtos());");
+      _builder.newLineIfNotEmpty();
+      _builder.append("\t");
+      _builder.append("getCoordinateSystem().clear();");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("if (cellSet == null) {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("promptSecurityMessage(dslMetadataService.translate(locale.toLanguageTag(), \"securityMessage\"), layoutManager.getDataArea());");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("return;");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("} else {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("layoutManager.getDataArea().removeAllComponents();");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("// generate a new result component");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("if (cellSet != null) {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("// create a multidimensional coordinate system against the cellSet");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("for\t(int axis = 0; axis < cellSet.getAxes().size(); axis++) {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("getCoordinateSystem().add(0);");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("// remove any previous component");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("if\t(dataComponent != null) {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("layoutManager.getDataArea().removeComponent(dataComponent);");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("dataComponent = null;");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("if (cellSet.getAxes().size() < 2) {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
+      _builder.append("log.error(\"at least 2 axes from referenced datamart ");
+      ChartDatamart _source_3 = chart.getSource();
+      DatamartDefinition _datamartRef_1 = _source_3.getDatamartRef();
+      String _name = _datamartRef_1.getName();
+      _builder.append(_name, "\t\t\t");
+      _builder.append(" are needed to render ");
+      String _name_1 = chart.getName();
+      _builder.append(_name_1, "\t\t\t");
+      _builder.append("\");");
+      _builder.newLineIfNotEmpty();
+      _builder.append("\t\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("dataComponent = createTabSheet(cellSet, cellSet.getAxes().size());");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("dataComponent.setSizeFull();");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("dataComponent.setId(\"dataComponent\");");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("dataComponent.addStyleName(\"");
+      String _styleName = EnumCssClass.DATA_COMPONENT.styleName();
+      _builder.append(_styleName, "\t\t");
+      _builder.append("\");");
+      _builder.newLineIfNotEmpty();
+      _builder.append("\t\t");
+      _builder.append("layoutManager.getDataArea().addComponent(dataComponent);");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("layoutManager.getDataArea().setExpandRatio(dataComponent, 1);");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("else {");
+      _builder.newLine();
+      _builder.append("\t\t");
+      _builder.append("log.error(\"referenced datamart ");
+      ChartDatamart _source_4 = chart.getSource();
+      DatamartDefinition _datamartRef_2 = _source_4.getDatamartRef();
+      String _name_2 = _datamartRef_2.getName();
+      _builder.append(_name_2, "\t\t");
+      _builder.append(" generates no results\");");
+      _builder.newLineIfNotEmpty();
+      _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("} catch (DerivedOlapException e) {");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("log.error(e.getLocalizedMessage());");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
+      body = _builder.toString();
+    } else {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body, "");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("// generate a new result component");
+      _builder_1.newLine();
+      _builder_1.append("try {");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("// remove any previous component");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("if\t(dataComponent != null) {");
+      _builder_1.newLine();
+      _builder_1.append("\t\t");
+      _builder_1.append("layoutManager.getDataArea().removeComponent(dataComponent);");
+      _builder_1.newLine();
+      _builder_1.append("\t\t");
+      _builder_1.append("dataComponent = null;");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("}\t\t\t\t");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("dataComponent = createTabSheet(null, 2);");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("dataComponent.setSizeFull();");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("dataComponent.setId(\"dataComponent\");");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("dataComponent.addStyleName(\"");
+      String _styleName_1 = EnumCssClass.DATA_COMPONENT.styleName();
+      _builder_1.append(_styleName_1, "\t");
+      _builder_1.append("\");");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("layoutManager.getDataArea().addComponent(dataComponent);");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("layoutManager.getDataArea().setExpandRatio(dataComponent, 1);");
+      _builder_1.newLine();
+      _builder_1.append("} catch (DerivedOlapException e) {");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("log.error(e.getLocalizedMessage());");
+      _builder_1.newLine();
+      _builder_1.append("}");
+      _builder_1.newLine();
+      body = _builder_1.toString();
+    }
+    return body;
+  }
+  
+  /**
+   * <p>if more than 2 axes (dimensions) are found in the cellSet, build recursive tabsheets as long as the remaining axes are more than 2.</p>
+   */
+  public String createTabSheet(final Chart chart) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("charts.clear();");
+    _builder.newLine();
+    _builder.append("// either create a recursive tabsheet or a chart");
+    _builder.newLine();
+    _builder.append("Component component = null;");
+    _builder.newLine();
+    _builder.append("if\t(axisNo == 2) {");
+    _builder.newLine();
+    String body = _builder.toString();
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body, "");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("try {");
+      _builder_1.newLine();
+      _builder_1.append("\t\t");
+      _builder_1.append("component = createD3Chart(cellSet);");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("} catch (JsonException e) {");
+      _builder_1.newLine();
+      _builder_1.append("\t\t");
+      _builder_1.append("log.error(e.getLocalizedMessage());");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("}");
+      _builder_1.newLine();
+      body = _builder_1.toString();
+    } else {
+      StringConcatenation _builder_2 = new StringConcatenation();
+      _builder_2.append(body, "");
+      _builder_2.newLineIfNotEmpty();
+      _builder_2.append("\t");
+      _builder_2.append("component = createChart(cellSet);");
+      _builder_2.newLine();
+      body = _builder_2.toString();
+    }
+    StringConcatenation _builder_3 = new StringConcatenation();
+    _builder_3.append(body, "");
+    _builder_3.newLineIfNotEmpty();
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("else {\t\t");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("Integer axis = axisNo-1;");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("TabSheet tabsheet = new TabSheet();");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("tabsheet.setSizeFull();");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("DerivedAxis tabAxis = cellSet.getAxes().get(axis);");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("// create a tab page for all tab axis members");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("int tabNo = 0;");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("for\t(DerivedPosition column : tabAxis.getPositions()) {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("// create the title for the axis");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("String title = null;");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("for (DerivedMember member : column.getMembers()) {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("if\t(title == null) {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t\t");
+    _builder_3.append("title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("else {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t\t");
+    _builder_3.append("title += \" / \"+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("// position the data to this coordinate");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("getCoordinateSystem().set(axis, tabNo);");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("component = createTabSheet(cellSet, axis);");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("// set the caption");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("if (component != null) {");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("component.setCaption(title);");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("// add the component as a tab page");
+    _builder_3.newLine();
+    _builder_3.append("\t\t\t");
+    _builder_3.append("tabsheet.addComponent(component);");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("\t\t");
+    _builder_3.append("tabNo++;");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("\t");
+    _builder_3.append("component = tabsheet;");
+    _builder_3.newLine();
+    _builder_3.append("}");
+    _builder_3.newLine();
+    _builder_3.append("return component;");
+    body = _builder_3.toString();
+    return body;
+  }
+  
+  /**
+   * <p>build the chart components.</p>
+   */
+  public String createChart(final Chart chart) {
+    String body = "";
+    String postfix = "";
+    String chartType = "";
+    boolean hasAxis = true;
+    HashMap<String, String> multipleAxes = CollectionLiterals.<String, String>newHashMap();
+    ChartAxis category_axis = null;
+    ChartAxis data_axis = null;
+    ChartAxis inner_axis = null;
+    ChartAxis outer_axis = null;
+    boolean axisSwitch = false;
+    String axisPrefix = "XY";
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartBar)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      boolean _isSwapped = ((ChartBar) _charttype_1).isSwapped();
+      if (_isSwapped) {
+        axisPrefix = "YX";
+        axisSwitch = true;
+      }
+    }
+    ChartDatamart _source = chart.getSource();
+    EList<ChartElement> _elements = _source.getElements();
+    for (final ChartElement element : _elements) {
+      if ((element instanceof ChartAxis)) {
+        ChartAxis axis = ((ChartAxis) element);
+        boolean _or = false;
+        DatamartAxis _axis = axis.getAxis();
+        AxisEnum _name = _axis.getName();
+        String _name_1 = _name.getName();
+        boolean _equals = _name_1.equals("COLUMNS");
+        if (_equals) {
+          _or = true;
+        } else {
+          DatamartAxis _axis_1 = axis.getAxis();
+          AxisEnum _name_2 = _axis_1.getName();
+          String _name_3 = _name_2.getName();
+          boolean _equals_1 = _name_3.equals("ROWS");
+          _or = _equals_1;
+        }
+        if (_or) {
+          boolean _or_1 = false;
+          boolean _or_2 = false;
+          RenderTypeEnum _renderType = axis.getRenderType();
+          String _name_4 = _renderType.getName();
+          boolean _equals_2 = _name_4.equals("LOG");
+          if (_equals_2) {
+            _or_2 = true;
+          } else {
+            RenderTypeEnum _renderType_1 = axis.getRenderType();
+            String _name_5 = _renderType_1.getName();
+            boolean _equals_3 = _name_5.equals("LINEAR");
+            _or_2 = _equals_3;
+          }
+          if (_or_2) {
+            _or_1 = true;
+          } else {
+            RenderTypeEnum _renderType_2 = axis.getRenderType();
+            String _name_6 = _renderType_2.getName();
+            boolean _equals_4 = _name_6.equals("PYRAMID");
+            _or_1 = _equals_4;
+          }
+          if (_or_1) {
+            data_axis = axis;
+          }
+          boolean _or_3 = false;
+          RenderTypeEnum _renderType_3 = axis.getRenderType();
+          String _name_7 = _renderType_3.getName();
+          boolean _equals_5 = _name_7.equals("CATEGORY");
+          if (_equals_5) {
+            _or_3 = true;
+          } else {
+            RenderTypeEnum _renderType_4 = axis.getRenderType();
+            String _name_8 = _renderType_4.getName();
+            boolean _equals_6 = _name_8.equals("DATE");
+            _or_3 = _equals_6;
+          }
+          if (_or_3) {
+            category_axis = axis;
+          }
+        }
+      }
+    }
+    ChartOption _charttype_2 = chart.getCharttype();
+    if ((_charttype_2 instanceof ChartBar)) {
+      chartType = "BAR";
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("_");
+      _builder.append(chartType, "");
+      postfix = _builder.toString();
+      inner_axis = category_axis;
+      outer_axis = data_axis;
+    } else {
+      ChartOption _charttype_3 = chart.getCharttype();
+      if ((_charttype_3 instanceof ChartBubble)) {
+        chartType = "BUBBLE";
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("_");
+        _builder_1.append(chartType, "");
+        postfix = _builder_1.toString();
+        hasAxis = true;
+        inner_axis = data_axis;
+        outer_axis = category_axis;
+      } else {
+        ChartOption _charttype_4 = chart.getCharttype();
+        if ((_charttype_4 instanceof ChartDonut)) {
+          chartType = "DONUT";
+          hasAxis = false;
+          inner_axis = category_axis;
+          outer_axis = data_axis;
+        } else {
+          ChartOption _charttype_5 = chart.getCharttype();
+          if ((_charttype_5 instanceof ChartLine)) {
+            chartType = "LINE";
+            inner_axis = category_axis;
+            outer_axis = data_axis;
+          } else {
+            ChartOption _charttype_6 = chart.getCharttype();
+            if ((_charttype_6 instanceof ChartPie)) {
+              chartType = "PIE";
+              hasAxis = false;
+              inner_axis = data_axis;
+              outer_axis = category_axis;
+            } else {
+              ChartOption _charttype_7 = chart.getCharttype();
+              if ((_charttype_7 instanceof ChartGauge)) {
+                chartType = "METER_GAUGE";
+                hasAxis = false;
+                inner_axis = data_axis;
+                outer_axis = category_axis;
+              }
+            }
+          }
+        }
+      }
+    }
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append("List<Integer> coordinate = new ArrayList<Integer>(getCoordinateSystem());");
+    _builder_2.newLine();
+    body = _builder_2.toString();
+    StringConcatenation _builder_3 = new StringConcatenation();
+    _builder_3.append(body, "");
+    _builder_3.append("// create a label series");
+    _builder_3.newLineIfNotEmpty();
+    _builder_3.append("List<String> ");
+    DatamartAxis _axis_2 = data_axis.getAxis();
+    AxisEnum _name_9 = _axis_2.getName();
+    String _literal = _name_9.getLiteral();
+    _builder_3.append(_literal, "");
+    _builder_3.append("TitlesArray = new ArrayList<String>();");
+    _builder_3.newLineIfNotEmpty();
+    _builder_3.append("for\t(DerivedPosition pos : cellSet.getAxes().get(");
+    DatamartAxis _axis_3 = data_axis.getAxis();
+    AxisEnum _name_10 = _axis_3.getName();
+    int _value = _name_10.getValue();
+    _builder_3.append(_value, "");
+    _builder_3.append(").getPositions()) {");
+    _builder_3.newLineIfNotEmpty();
+    body = _builder_3.toString();
+    StringConcatenation _builder_4 = new StringConcatenation();
+    _builder_4.append(body, "");
+    _builder_4.newLineIfNotEmpty();
+    _builder_4.append("\t");
+    _builder_4.append("String title = null;");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("Boolean valueUsed = false;");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("for (DerivedMember member : pos.getMembers()) {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("if\t(title == null) {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t");
+    _builder_4.append("title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("else {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t");
+    _builder_4.append("title += \" \"+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    DatamartAxis _axis_4 = data_axis.getAxis();
+    AxisEnum _name_11 = _axis_4.getName();
+    String _literal_1 = _name_11.getLiteral();
+    _builder_4.append(_literal_1, "\t");
+    _builder_4.append("TitlesArray.add(title);");
+    _builder_4.newLineIfNotEmpty();
+    _builder_4.append("}");
+    _builder_4.newLine();
+    body = _builder_4.toString();
+    if (hasAxis) {
+      StringConcatenation _builder_5 = new StringConcatenation();
+      _builder_5.append(body, "");
+      _builder_5.append("Series ");
+      DatamartAxis _axis_5 = data_axis.getAxis();
+      AxisEnum _name_12 = _axis_5.getName();
+      String _literal_2 = _name_12.getLiteral();
+      _builder_5.append(_literal_2, "");
+      _builder_5.append("Series = new Series();");
+      _builder_5.newLineIfNotEmpty();
+      body = _builder_5.toString();
+      StringConcatenation _builder_6 = new StringConcatenation();
+      _builder_6.append(body, "");
+      _builder_6.append("if (");
+      DatamartAxis _axis_6 = data_axis.getAxis();
+      AxisEnum _name_13 = _axis_6.getName();
+      String _literal_3 = _name_13.getLiteral();
+      _builder_6.append(_literal_3, "");
+      _builder_6.append("TitlesArray.size() > 0) {");
+      _builder_6.newLineIfNotEmpty();
+      body = _builder_6.toString();
+      boolean showMarker = false;
+      ChartOption _charttype_8 = chart.getCharttype();
+      if ((_charttype_8 instanceof ChartLine)) {
+        ChartOption _charttype_9 = chart.getCharttype();
+        boolean _isShowMarker = ((ChartLine) _charttype_9).isShowMarker();
+        showMarker = _isShowMarker;
+      }
+      StringConcatenation _builder_7 = new StringConcatenation();
+      _builder_7.append(body, "");
+      String _createLabelSeries = this.createLabelSeries(chart, data_axis, multipleAxes, axisPrefix, showMarker);
+      _builder_7.append(_createLabelSeries, "");
+      body = _builder_7.toString();
+      StringConcatenation _builder_8 = new StringConcatenation();
+      _builder_8.append(body, "");
+      _builder_8.append("}");
+      _builder_8.newLineIfNotEmpty();
+      body = _builder_8.toString();
+    }
+    StringConcatenation _builder_9 = new StringConcatenation();
+    _builder_9.append(body, "");
+    _builder_9.append("// create the data series ticks");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("String ");
+    DatamartAxis _axis_7 = category_axis.getAxis();
+    AxisEnum _name_14 = _axis_7.getName();
+    String _literal_4 = _name_14.getLiteral();
+    _builder_9.append(_literal_4, "");
+    _builder_9.append("AxisLabel = \"\";");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("Boolean ");
+    DatamartAxis _axis_8 = category_axis.getAxis();
+    AxisEnum _name_15 = _axis_8.getName();
+    String _literal_5 = _name_15.getLiteral();
+    _builder_9.append(_literal_5, "");
+    _builder_9.append("AxisLabelSet = false;");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("List<String> ");
+    DatamartAxis _axis_9 = category_axis.getAxis();
+    AxisEnum _name_16 = _axis_9.getName();
+    String _literal_6 = _name_16.getLiteral();
+    _builder_9.append(_literal_6, "");
+    _builder_9.append("TitlesArray = new ArrayList<String>();");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("for\t(DerivedPosition pos : cellSet.getAxes().get(");
+    DatamartAxis _axis_10 = category_axis.getAxis();
+    AxisEnum _name_17 = _axis_10.getName();
+    int _value_1 = _name_17.getValue();
+    _builder_9.append(_value_1, "");
+    _builder_9.append(").getPositions()) {");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("\t");
+    _builder_9.append("String title = \"\";");
+    _builder_9.newLine();
+    _builder_9.append("\t");
+    _builder_9.append("for (DerivedMember member : pos.getMembers()) {");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("String[] tokens = member.getUniqueName().split(\"\\\\]\\\\.\\\\[\");");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("if (!");
+    DatamartAxis _axis_11 = category_axis.getAxis();
+    AxisEnum _name_18 = _axis_11.getName();
+    String _literal_7 = _name_18.getLiteral();
+    _builder_9.append(_literal_7, "    \t");
+    _builder_9.append("AxisLabelSet) {");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("    \t\t");
+    _builder_9.append("if (");
+    DatamartAxis _axis_12 = category_axis.getAxis();
+    AxisEnum _name_19 = _axis_12.getName();
+    String _literal_8 = _name_19.getLiteral();
+    _builder_9.append(_literal_8, "    \t\t");
+    _builder_9.append("AxisLabel.length() > 0) {");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("    \t\t\t");
+    DatamartAxis _axis_13 = category_axis.getAxis();
+    AxisEnum _name_20 = _axis_13.getName();
+    String _literal_9 = _name_20.getLiteral();
+    _builder_9.append(_literal_9, "    \t\t\t");
+    _builder_9.append("AxisLabel += \" / \";");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("    \t\t");
+    _builder_9.append("}");
+    _builder_9.newLine();
+    _builder_9.append("    \t\t");
+    DatamartAxis _axis_14 = category_axis.getAxis();
+    AxisEnum _name_21 = _axis_14.getName();
+    String _literal_10 = _name_21.getLiteral();
+    _builder_9.append(_literal_10, "    \t\t");
+    _builder_9.append("AxisLabel += dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getLevel().getName());");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("    \t");
+    _builder_9.append("}");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("int start = 1;");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("// if shortlabel is configured, use only last level name");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("if (");
+    boolean _isShortLabel = category_axis.isShortLabel();
+    boolean _booleanValue = Boolean.valueOf(_isShortLabel).booleanValue();
+    _builder_9.append(_booleanValue, "    \t");
+    _builder_9.append(") {");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("    \t\t");
+    _builder_9.append("start = tokens.length-1;");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("}");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("for\t(int token = start; token < tokens.length; token++) {");
+    _builder_9.newLine();
+    _builder_9.append("    \t\t");
+    _builder_9.append("title += dslMetadataService.translate(user.getLocale().toLanguageTag(), tokens[token])+\" \";");
+    _builder_9.newLine();
+    _builder_9.append("    \t");
+    _builder_9.append("}");
+    _builder_9.newLine();
+    _builder_9.append("\t");
+    _builder_9.append("}");
+    _builder_9.newLine();
+    _builder_9.append("\t");
+    DatamartAxis _axis_15 = category_axis.getAxis();
+    AxisEnum _name_22 = _axis_15.getName();
+    String _literal_11 = _name_22.getLiteral();
+    _builder_9.append(_literal_11, "\t");
+    _builder_9.append("AxisLabelSet = true;");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("\t");
+    DatamartAxis _axis_16 = category_axis.getAxis();
+    AxisEnum _name_23 = _axis_16.getName();
+    String _literal_12 = _name_23.getLiteral();
+    _builder_9.append(_literal_12, "\t");
+    _builder_9.append("TitlesArray.add(title.trim().replace(\"[\", \"\").replace(\"]\", \"\"));");
+    _builder_9.newLineIfNotEmpty();
+    _builder_9.append("}");
+    _builder_9.newLine();
+    body = _builder_9.toString();
+    if (hasAxis) {
+      StringConcatenation _builder_10 = new StringConcatenation();
+      _builder_10.append(body, "");
+      _builder_10.append("Ticks ");
+      DatamartAxis _axis_17 = category_axis.getAxis();
+      AxisEnum _name_24 = _axis_17.getName();
+      String _literal_13 = _name_24.getLiteral();
+      _builder_10.append(_literal_13, "");
+      _builder_10.append("Ticks = new Ticks();");
+      _builder_10.newLineIfNotEmpty();
+      DatamartAxis _axis_18 = category_axis.getAxis();
+      AxisEnum _name_25 = _axis_18.getName();
+      String _literal_14 = _name_25.getLiteral();
+      _builder_10.append(_literal_14, "");
+      _builder_10.append("Ticks.add(");
+      DatamartAxis _axis_19 = category_axis.getAxis();
+      AxisEnum _name_26 = _axis_19.getName();
+      String _literal_15 = _name_26.getLiteral();
+      _builder_10.append(_literal_15, "");
+      _builder_10.append("TitlesArray.toArray());");
+      _builder_10.newLineIfNotEmpty();
+      body = _builder_10.toString();
+    }
+    StringConcatenation _builder_11 = new StringConcatenation();
+    _builder_11.append(body, "");
+    _builder_11.append("// copy cellset data to data series");
+    _builder_11.newLineIfNotEmpty();
+    _builder_11.append("DataSeries dataSeries = new DataSeries();");
+    _builder_11.newLine();
+    body = _builder_11.toString();
+    ChartOption _charttype_10 = chart.getCharttype();
+    if ((_charttype_10 instanceof ChartBubble)) {
+      StringConcatenation _builder_12 = new StringConcatenation();
+      _builder_12.append(body, "");
+      _builder_12.append("dataSeries.newSeries();");
+      _builder_12.newLineIfNotEmpty();
+      body = _builder_12.toString();
+    }
+    StringConcatenation _builder_13 = new StringConcatenation();
+    _builder_13.append(body, "");
+    _builder_13.append("int ");
+    DatamartAxis _axis_20 = outer_axis.getAxis();
+    AxisEnum _name_27 = _axis_20.getName();
+    String _literal_16 = _name_27.getLiteral();
+    _builder_13.append(_literal_16, "");
+    _builder_13.append("No = 0;");
+    _builder_13.newLineIfNotEmpty();
+    body = _builder_13.toString();
+    StringConcatenation _builder_14 = new StringConcatenation();
+    _builder_14.append(body, "");
+    _builder_14.append("for\t(DerivedPosition ");
+    DatamartAxis _axis_21 = outer_axis.getAxis();
+    AxisEnum _name_28 = _axis_21.getName();
+    String _literal_17 = _name_28.getLiteral();
+    _builder_14.append(_literal_17, "");
+    _builder_14.append("Pos : cellSet.getAxes().get(");
+    DatamartAxis _axis_22 = outer_axis.getAxis();
+    AxisEnum _name_29 = _axis_22.getName();
+    int _value_2 = _name_29.getValue();
+    _builder_14.append(_value_2, "");
+    _builder_14.append(").getPositions()) {");
+    _builder_14.newLineIfNotEmpty();
+    body = _builder_14.toString();
+    StringConcatenation _builder_15 = new StringConcatenation();
+    _builder_15.append(body, "");
+    _builder_15.append("\tcoordinate.set(");
+    DatamartAxis _axis_23 = outer_axis.getAxis();
+    AxisEnum _name_30 = _axis_23.getName();
+    int _value_3 = _name_30.getValue();
+    _builder_15.append(_value_3, "");
+    _builder_15.append(", ");
+    DatamartAxis _axis_24 = outer_axis.getAxis();
+    AxisEnum _name_31 = _axis_24.getName();
+    String _literal_18 = _name_31.getLiteral();
+    _builder_15.append(_literal_18, "");
+    _builder_15.append("No);");
+    _builder_15.newLineIfNotEmpty();
+    body = _builder_15.toString();
+    ChartOption _charttype_11 = chart.getCharttype();
+    if ((_charttype_11 instanceof ChartDonut)) {
+      StringConcatenation _builder_16 = new StringConcatenation();
+      _builder_16.append(body, "");
+      _builder_16.append("\tdataSeries.newSeries();");
+      _builder_16.newLineIfNotEmpty();
+      body = _builder_16.toString();
+    }
+    if (((!(chart.getCharttype() instanceof ChartPie)) && (!(chart.getCharttype() instanceof ChartDonut)))) {
+      StringConcatenation _builder_17 = new StringConcatenation();
+      _builder_17.append(body, "");
+      _builder_17.append("\tArrayList<Object> ");
+      DatamartAxis _axis_25 = inner_axis.getAxis();
+      AxisEnum _name_32 = _axis_25.getName();
+      String _literal_19 = _name_32.getLiteral();
+      _builder_17.append(_literal_19, "");
+      _builder_17.append("DataSeries = new ArrayList<Object>();");
+      _builder_17.newLineIfNotEmpty();
+      body = _builder_17.toString();
+    }
+    StringConcatenation _builder_18 = new StringConcatenation();
+    _builder_18.append(body, "");
+    _builder_18.append("\tint ");
+    DatamartAxis _axis_26 = inner_axis.getAxis();
+    AxisEnum _name_33 = _axis_26.getName();
+    String _literal_20 = _name_33.getLiteral();
+    _builder_18.append(_literal_20, "");
+    _builder_18.append("No = 0;");
+    _builder_18.newLineIfNotEmpty();
+    body = _builder_18.toString();
+    StringConcatenation _builder_19 = new StringConcatenation();
+    _builder_19.append(body, "");
+    _builder_19.append("\tfor\t(DerivedPosition ");
+    DatamartAxis _axis_27 = inner_axis.getAxis();
+    AxisEnum _name_34 = _axis_27.getName();
+    String _literal_21 = _name_34.getLiteral();
+    _builder_19.append(_literal_21, "");
+    _builder_19.append("Pos : cellSet.getAxes().get(");
+    DatamartAxis _axis_28 = inner_axis.getAxis();
+    AxisEnum _name_35 = _axis_28.getName();
+    int _value_4 = _name_35.getValue();
+    _builder_19.append(_value_4, "");
+    _builder_19.append(").getPositions()) {");
+    _builder_19.newLineIfNotEmpty();
+    body = _builder_19.toString();
+    ChartOption _charttype_12 = chart.getCharttype();
+    if ((_charttype_12 instanceof ChartPie)) {
+      StringConcatenation _builder_20 = new StringConcatenation();
+      _builder_20.append(body, "");
+      _builder_20.append("\t\tdataSeries.newSeries();");
+      _builder_20.newLineIfNotEmpty();
+      body = _builder_20.toString();
+    }
+    StringConcatenation _builder_21 = new StringConcatenation();
+    _builder_21.append(body, "");
+    _builder_21.append("\t\tcoordinate.set(");
+    DatamartAxis _axis_29 = inner_axis.getAxis();
+    AxisEnum _name_36 = _axis_29.getName();
+    int _value_5 = _name_36.getValue();
+    _builder_21.append(_value_5, "");
+    _builder_21.append(", ");
+    DatamartAxis _axis_30 = inner_axis.getAxis();
+    AxisEnum _name_37 = _axis_30.getName();
+    String _literal_22 = _name_37.getLiteral();
+    _builder_21.append(_literal_22, "");
+    _builder_21.append("No);");
+    _builder_21.newLineIfNotEmpty();
+    body = _builder_21.toString();
+    StringConcatenation _builder_22 = new StringConcatenation();
+    _builder_22.append(body, "");
+    _builder_22.newLineIfNotEmpty();
+    _builder_22.append("\t\t");
+    _builder_22.append("Object value = null;");
+    _builder_22.newLine();
+    _builder_22.append("\t\t");
+    _builder_22.append("DerivedCell cell = cellSet.getCell(coordinate);");
+    _builder_22.newLine();
+    _builder_22.append("\t\t");
+    _builder_22.append("if (cell != null) {");
+    _builder_22.newLine();
+    _builder_22.append("\t\t\t");
+    _builder_22.append("value = cell.getValue();");
+    _builder_22.newLine();
+    _builder_22.append("\t\t");
+    _builder_22.append("}");
+    _builder_22.newLine();
+    body = _builder_22.toString();
+    boolean _or_4 = false;
+    ChartOption _charttype_13 = chart.getCharttype();
+    if ((_charttype_13 instanceof ChartPie)) {
+      _or_4 = true;
+    } else {
+      ChartOption _charttype_14 = chart.getCharttype();
+      _or_4 = (_charttype_14 instanceof ChartDonut);
+    }
+    if (_or_4) {
+      StringConcatenation _builder_23 = new StringConcatenation();
+      _builder_23.append(body, "");
+      _builder_23.append("\t\tdataSeries.add(");
+      DatamartAxis _axis_31 = outer_axis.getAxis();
+      AxisEnum _name_38 = _axis_31.getName();
+      String _literal_23 = _name_38.getLiteral();
+      _builder_23.append(_literal_23, "");
+      _builder_23.append("TitlesArray.get(");
+      DatamartAxis _axis_32 = outer_axis.getAxis();
+      AxisEnum _name_39 = _axis_32.getName();
+      String _literal_24 = _name_39.getLiteral();
+      _builder_23.append(_literal_24, "");
+      _builder_23.append("No)+\" \"+");
+      DatamartAxis _axis_33 = inner_axis.getAxis();
+      AxisEnum _name_40 = _axis_33.getName();
+      String _literal_25 = _name_40.getLiteral();
+      _builder_23.append(_literal_25, "");
+      _builder_23.append("TitlesArray.get(");
+      DatamartAxis _axis_34 = inner_axis.getAxis();
+      AxisEnum _name_41 = _axis_34.getName();
+      String _literal_26 = _name_41.getLiteral();
+      _builder_23.append(_literal_26, "");
+      _builder_23.append("No),(value == null ? 0.0 : value));");
+      _builder_23.newLineIfNotEmpty();
+      body = _builder_23.toString();
+    } else {
+      StringConcatenation _builder_24 = new StringConcatenation();
+      _builder_24.append(body, "");
+      _builder_24.append("\t\t");
+      DatamartAxis _axis_35 = inner_axis.getAxis();
+      AxisEnum _name_42 = _axis_35.getName();
+      String _literal_27 = _name_42.getLiteral();
+      _builder_24.append(_literal_27, "");
+      _builder_24.append("DataSeries.add(value == null ? 0.0 : value);");
+      _builder_24.newLineIfNotEmpty();
+      body = _builder_24.toString();
+    }
+    StringConcatenation _builder_25 = new StringConcatenation();
+    _builder_25.append(body, "");
+    _builder_25.append("\t\t");
+    DatamartAxis _axis_36 = inner_axis.getAxis();
+    AxisEnum _name_43 = _axis_36.getName();
+    String _literal_28 = _name_43.getLiteral();
+    _builder_25.append(_literal_28, "");
+    _builder_25.append("No ++;");
+    _builder_25.newLineIfNotEmpty();
+    _builder_25.append("\t");
+    _builder_25.append("}");
+    _builder_25.newLine();
+    body = _builder_25.toString();
+    if (((!(chart.getCharttype() instanceof ChartPie)) && (!(chart.getCharttype() instanceof ChartDonut)))) {
+      ChartOption _charttype_15 = chart.getCharttype();
+      if ((_charttype_15 instanceof ChartBubble)) {
+        StringConcatenation _builder_26 = new StringConcatenation();
+        _builder_26.append(body, "");
+        _builder_26.append("\t");
+        DatamartAxis _axis_37 = inner_axis.getAxis();
+        AxisEnum _name_44 = _axis_37.getName();
+        String _literal_29 = _name_44.getLiteral();
+        _builder_26.append(_literal_29, "");
+        _builder_26.append("DataSeries.add(");
+        DatamartAxis _axis_38 = outer_axis.getAxis();
+        AxisEnum _name_45 = _axis_38.getName();
+        String _literal_30 = _name_45.getLiteral();
+        _builder_26.append(_literal_30, "");
+        _builder_26.append("TitlesArray.get(");
+        DatamartAxis _axis_39 = outer_axis.getAxis();
+        AxisEnum _name_46 = _axis_39.getName();
+        String _literal_31 = _name_46.getLiteral();
+        _builder_26.append(_literal_31, "");
+        _builder_26.append("No));");
+        _builder_26.newLineIfNotEmpty();
+        body = _builder_26.toString();
+      }
+      StringConcatenation _builder_27 = new StringConcatenation();
+      _builder_27.append(body, "");
+      _builder_27.append("\tdataSeries.add(");
+      DatamartAxis _axis_40 = inner_axis.getAxis();
+      AxisEnum _name_47 = _axis_40.getName();
+      String _literal_32 = _name_47.getLiteral();
+      _builder_27.append(_literal_32, "");
+      _builder_27.append("DataSeries.toArray());");
+      _builder_27.newLineIfNotEmpty();
+      body = _builder_27.toString();
+    }
+    StringConcatenation _builder_28 = new StringConcatenation();
+    _builder_28.append(body, "");
+    _builder_28.append("\t");
+    DatamartAxis _axis_41 = outer_axis.getAxis();
+    AxisEnum _name_48 = _axis_41.getName();
+    String _literal_33 = _name_48.getLiteral();
+    _builder_28.append(_literal_33, "");
+    _builder_28.append("No ++;");
+    _builder_28.newLineIfNotEmpty();
+    _builder_28.append("}");
+    _builder_28.newLine();
+    body = _builder_28.toString();
+    StringConcatenation _builder_29 = new StringConcatenation();
+    _builder_29.append(body, "");
+    _builder_29.append("SeriesDefaults seriesDefaults = new SeriesDefaults()");
+    _builder_29.newLineIfNotEmpty();
+    _builder_29.append("\t");
+    _builder_29.append(".setRenderer(SeriesRenderers.");
+    _builder_29.append(chartType, "\t");
+    _builder_29.append(");");
+    _builder_29.newLineIfNotEmpty();
+    body = _builder_29.toString();
+    ChartOption _charttype_16 = chart.getCharttype();
+    if ((_charttype_16 instanceof ChartLine)) {
+      StringConcatenation _builder_30 = new StringConcatenation();
+      _builder_30.append(body, "");
+      _builder_30.append("seriesDefaults.setFillToZero(");
+      ChartOption _charttype_17 = chart.getCharttype();
+      boolean _isFillToZero = ((ChartLine) _charttype_17).isFillToZero();
+      boolean _booleanValue_1 = Boolean.valueOf(_isFillToZero).booleanValue();
+      String _string = Boolean.valueOf(_booleanValue_1).toString();
+      _builder_30.append(_string, "");
+      _builder_30.append(").setFill(");
+      ChartOption _charttype_18 = chart.getCharttype();
+      boolean _isFillArea = ((ChartLine) _charttype_18).isFillArea();
+      String _string_1 = Boolean.valueOf(_isFillArea).toString();
+      _builder_30.append(_string_1, "");
+      _builder_30.append(");");
+      _builder_30.newLineIfNotEmpty();
+      body = _builder_30.toString();
+      ChartOption _charttype_19 = chart.getCharttype();
+      boolean _isTrendLine = ((ChartLine) _charttype_19).isTrendLine();
+      if (_isTrendLine) {
+        StringConcatenation _builder_31 = new StringConcatenation();
+        _builder_31.append(body, "");
+        _builder_31.append("seriesDefaults.setTrendline(");
+        _builder_31.newLineIfNotEmpty();
+        _builder_31.append("\t");
+        _builder_31.append("new Trendline().setShow(true).setLineWidth(1));");
+        _builder_31.newLine();
+        body = _builder_31.toString();
+      }
+    }
+    StringConcatenation _builder_32 = new StringConcatenation();
+    _builder_32.append(body, "");
+    _builder_32.append("Options options = new Options()");
+    _builder_32.newLineIfNotEmpty();
+    _builder_32.append("\t");
+    _builder_32.append(".setSeriesDefaults(seriesDefaults);");
+    _builder_32.newLine();
+    body = _builder_32.toString();
+    ChartOption _charttype_20 = chart.getCharttype();
+    if ((_charttype_20 instanceof ChartPie)) {
+      StringConcatenation _builder_33 = new StringConcatenation();
+      _builder_33.append(body, "");
+      _builder_33.append("seriesDefaults.setRendererOptions(new PieRenderer()");
+      _builder_33.newLineIfNotEmpty();
+      _builder_33.append("\t");
+      _builder_33.append(".setShowDataLabels(true).setFill(");
+      ChartOption _charttype_21 = chart.getCharttype();
+      boolean _isEmpty = ((ChartPie) _charttype_21).isEmpty();
+      boolean _not = (!_isEmpty);
+      String _string_2 = Boolean.valueOf(_not).toString();
+      _builder_33.append(_string_2, "\t");
+      _builder_33.append("));");
+      _builder_33.newLineIfNotEmpty();
+      body = _builder_33.toString();
+    } else {
+      ChartOption _charttype_22 = chart.getCharttype();
+      if ((_charttype_22 instanceof ChartDonut)) {
+        StringConcatenation _builder_34 = new StringConcatenation();
+        _builder_34.append(body, "");
+        _builder_34.append("seriesDefaults.setRendererOptions(new DonutRenderer()");
+        _builder_34.newLineIfNotEmpty();
+        _builder_34.append("\t");
+        _builder_34.append(".setShowDataLabels(true)");
+        _builder_34.newLine();
+        _builder_34.append("\t");
+        _builder_34.append(".setStartAngle(-90)");
+        _builder_34.newLine();
+        _builder_34.append("\t");
+        _builder_34.append(".setSliceMargin(3));");
+        _builder_34.newLine();
+        body = _builder_34.toString();
+      } else {
+        ChartOption _charttype_23 = chart.getCharttype();
+        if ((_charttype_23 instanceof ChartBubble)) {
+          StringConcatenation _builder_35 = new StringConcatenation();
+          _builder_35.append(body, "");
+          _builder_35.append("seriesDefaults.setRendererOptions(new BubbleRenderer()");
+          _builder_35.newLineIfNotEmpty();
+          _builder_35.append("\t");
+          _builder_35.append(".setVaryBubbleColors(true)");
+          _builder_35.newLine();
+          _builder_35.append("\t");
+          {
+            ChartOption _charttype_24 = chart.getCharttype();
+            boolean _isMultiplier = ((ChartBubble) _charttype_24).isMultiplier();
+            if (_isMultiplier) {
+              _builder_35.append(".setAutoscaleMultiplier(");
+              ChartOption _charttype_25 = chart.getCharttype();
+              String _multiplierValue = ((ChartBubble) _charttype_25).getMultiplierValue();
+              _builder_35.append(_multiplierValue, "\t");
+              _builder_35.append("f)");
+            }
+          }
+          _builder_35.newLineIfNotEmpty();
+          _builder_35.append("    ");
+          {
+            ChartOption _charttype_26 = chart.getCharttype();
+            boolean _isTransparent = ((ChartBubble) _charttype_26).isTransparent();
+            if (_isTransparent) {
+              _builder_35.append(".setHighlightAlpha(0.8f).setBubbleAlpha(0.6f)");
+            }
+          }
+          _builder_35.newLineIfNotEmpty();
+          _builder_35.append("\t");
+          {
+            ChartOption _charttype_27 = chart.getCharttype();
+            boolean _isGradient = ((ChartBubble) _charttype_27).isGradient();
+            if (_isGradient) {
+              _builder_35.append(".setBubbleGradients(true)");
+            }
+          }
+          _builder_35.newLineIfNotEmpty();
+          _builder_35.append("\t");
+          _builder_35.append(".setShowLabels(false)");
+          _builder_35.newLine();
+          _builder_35.append("\t");
+          _builder_35.append(".setAutoscaleBubbles(true));");
+          _builder_35.newLine();
+          body = _builder_35.toString();
+        } else {
+          ChartOption _charttype_28 = chart.getCharttype();
+          if ((_charttype_28 instanceof ChartGauge)) {
+            String intervalValues = "";
+            String intervalColors = "";
+            ChartOption _charttype_29 = chart.getCharttype();
+            boolean _isHasIntervals = ((ChartGauge) _charttype_29).isHasIntervals();
+            if (_isHasIntervals) {
+              ChartOption _charttype_30 = chart.getCharttype();
+              EList<ChartInterval> _intervals = ((ChartGauge) _charttype_30).getIntervals();
+              for (final ChartInterval interval : _intervals) {
+                if ((interval instanceof ChartNumberInterval)) {
+                  StringConcatenation _builder_36 = new StringConcatenation();
+                  _builder_36.append(intervalValues, "");
+                  {
+                    int _length = intervalValues.length();
+                    boolean _greaterThan = (_length > 0);
+                    if (_greaterThan) {
+                      _builder_36.append(",");
+                    }
+                  }
+                  int _numberIntervalValue = ((ChartNumberInterval) interval).getNumberIntervalValue();
+                  _builder_36.append(_numberIntervalValue, "");
+                  _builder_36.append("f");
+                  intervalValues = _builder_36.toString();
+                  ChartRangeElement _numberRange = ((ChartNumberInterval) interval).getNumberRange();
+                  if ((_numberRange instanceof ChartSegmentColor)) {
+                    StringConcatenation _builder_37 = new StringConcatenation();
+                    _builder_37.append(intervalColors, "");
+                    {
+                      int _length_1 = intervalColors.length();
+                      boolean _greaterThan_1 = (_length_1 > 0);
+                      if (_greaterThan_1) {
+                        _builder_37.append(",");
+                      }
+                    }
+                    _builder_37.append("\"");
+                    ChartRangeElement _numberRange_1 = ((ChartNumberInterval) interval).getNumberRange();
+                    String _rgb = ((ChartSegmentColor) _numberRange_1).getRgb();
+                    String _hex = this.toHex(_rgb);
+                    _builder_37.append(_hex, "");
+                    _builder_37.append("\"");
+                    intervalColors = _builder_37.toString();
+                  }
+                }
+              }
+            }
+            StringConcatenation _builder_38 = new StringConcatenation();
+            _builder_38.append(body, "");
+            _builder_38.append("seriesDefaults.setRendererOptions(new MeterGaugeRenderer()");
+            _builder_38.newLineIfNotEmpty();
+            _builder_38.append("\t");
+            _builder_38.append(".setShowTickLabels(");
+            ChartOption _charttype_31 = chart.getCharttype();
+            boolean _isHasTicks = ((ChartGauge) _charttype_31).isHasTicks();
+            String _string_3 = Boolean.valueOf(_isHasTicks).toString();
+            _builder_38.append(_string_3, "\t");
+            _builder_38.append(")");
+            _builder_38.newLineIfNotEmpty();
+            _builder_38.append("\t");
+            {
+              ChartOption _charttype_32 = chart.getCharttype();
+              boolean _isLabeled = ((ChartGauge) _charttype_32).isLabeled();
+              if (_isLabeled) {
+                _builder_38.append(".setLabel(\"");
+                ChartOption _charttype_33 = chart.getCharttype();
+                String _labelValue = ((ChartGauge) _charttype_33).getLabelValue();
+                _builder_38.append(_labelValue, "\t");
+                _builder_38.append("\")");
+              }
+            }
+            _builder_38.newLineIfNotEmpty();
+            _builder_38.append("\t");
+            {
+              ChartOption _charttype_34 = chart.getCharttype();
+              boolean _isHasIntervals_1 = ((ChartGauge) _charttype_34).isHasIntervals();
+              if (_isHasIntervals_1) {
+                _builder_38.append(".setIntervals(");
+                _builder_38.append(intervalValues, "\t");
+                _builder_38.append(")");
+              }
+            }
+            _builder_38.newLineIfNotEmpty();
+            _builder_38.append("\t");
+            {
+              ChartOption _charttype_35 = chart.getCharttype();
+              boolean _isHasIntervals_2 = ((ChartGauge) _charttype_35).isHasIntervals();
+              if (_isHasIntervals_2) {
+                _builder_38.append(".setIntervalColors(");
+                _builder_38.append(intervalColors, "\t");
+                _builder_38.append(")");
+              }
+            }
+            _builder_38.append(");");
+            _builder_38.newLineIfNotEmpty();
+            body = _builder_38.toString();
+          } else {
+            ChartOption _charttype_36 = chart.getCharttype();
+            if ((_charttype_36 instanceof ChartBar)) {
+              StringConcatenation _builder_39 = new StringConcatenation();
+              _builder_39.append(body, "");
+              _builder_39.append("seriesDefaults.setFillToZero(true);");
+              _builder_39.newLineIfNotEmpty();
+              _builder_39.append("seriesDefaults.setRendererOptions(new BarRenderer()");
+              _builder_39.newLine();
+              _builder_39.append("    ");
+              {
+                if (axisSwitch) {
+                  _builder_39.append(".setBarDirection(BarDirections.HOTIZONTAL));");
+                } else {
+                  _builder_39.append(".setBarDirection(BarDirections.VERTICAL));");
+                }
+              }
+              _builder_39.newLineIfNotEmpty();
+              body = _builder_39.toString();
+              ChartOption _charttype_37 = chart.getCharttype();
+              boolean _isStacked = ((ChartBar) _charttype_37).isStacked();
+              if (_isStacked) {
+                StringConcatenation _builder_40 = new StringConcatenation();
+                _builder_40.append(body, "");
+                _builder_40.append("options.setStackSeries(true);");
+                _builder_40.newLineIfNotEmpty();
+                body = _builder_40.toString();
+              }
+              ChartOption _charttype_38 = chart.getCharttype();
+              boolean _isShadow = ((ChartBar) _charttype_38).isShadow();
+              if (_isShadow) {
+                StringConcatenation _builder_41 = new StringConcatenation();
+                _builder_41.append(body, "");
+                _builder_41.append("seriesDefaults.setShadow(true).setShadowAlpha(0.05f);");
+                _builder_41.newLineIfNotEmpty();
+                body = _builder_41.toString();
+              }
+              ChartOption _charttype_39 = chart.getCharttype();
+              boolean _isAnimated = ((ChartBar) _charttype_39).isAnimated();
+              if (_isAnimated) {
+                StringConcatenation _builder_42 = new StringConcatenation();
+                _builder_42.append(body, "");
+                _builder_42.append("options.setAnimate(true);");
+                _builder_42.newLineIfNotEmpty();
+                body = _builder_42.toString();
+              }
+            }
+          }
+        }
+      }
+    }
+    StringConcatenation _builder_43 = new StringConcatenation();
+    _builder_43.append(body, "");
+    _builder_43.newLineIfNotEmpty();
+    _builder_43.append("String[] seriesColors = {\"#98E958\",\"#3090F0\",\"#EC6464\",\"#F9DD51\",\"#24DCD4\",\"#EC64A5\",\"#685CB0\",\"#FF7D42\",\"#AA514D\",\"#7FB053\",\"#BBA85B\",\"#247981\"};");
+    _builder_43.newLine();
+    _builder_43.append("options.setSeriesColors(seriesColors);");
+    _builder_43.newLine();
+    body = _builder_43.toString();
+    if (hasAxis) {
+      StringConcatenation _builder_44 = new StringConcatenation();
+      _builder_44.append(body, "");
+      _builder_44.append("Axes axes = new Axes();");
+      _builder_44.newLineIfNotEmpty();
+      body = _builder_44.toString();
+      ChartOption _charttype_40 = chart.getCharttype();
+      if ((_charttype_40 instanceof ChartBubble)) {
+        StringConcatenation _builder_45 = new StringConcatenation();
+        _builder_45.append(body, "");
+        _builder_45.append("CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();");
+        _builder_45.newLineIfNotEmpty();
+        _builder_45.append("axisTickRenderer.setTextColor(\"#202020\");");
+        _builder_45.newLine();
+        _builder_45.append("if (");
+        DatamartAxis _axis_42 = data_axis.getAxis();
+        AxisEnum _name_49 = _axis_42.getName();
+        String _literal_34 = _name_49.getLiteral();
+        _builder_45.append(_literal_34, "");
+        _builder_45.append("TitlesArray.size() > 0) {");
+        _builder_45.newLineIfNotEmpty();
+        _builder_45.append("\t");
+        _builder_45.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt = axisPrefix.charAt(0);
+        _builder_45.append(_charAt, "\t");
+        _builder_45.append(").setLabel(");
+        DatamartAxis _axis_43 = data_axis.getAxis();
+        AxisEnum _name_50 = _axis_43.getName();
+        String _literal_35 = _name_50.getLiteral();
+        _builder_45.append(_literal_35, "\t");
+        _builder_45.append("TitlesArray.get(0)).setTickOptions(axisTickRenderer");
+        {
+          int _angle = category_axis.getAngle();
+          boolean _notEquals = (_angle != 0);
+          if (_notEquals) {
+            _builder_45.append(".setAngle(");
+            int _angle_1 = data_axis.getAngle();
+            _builder_45.append(_angle_1, "\t");
+            _builder_45.append(")");
+          }
+        }
+        _builder_45.append("));");
+        _builder_45.newLineIfNotEmpty();
+        _builder_45.append("\t");
+        _builder_45.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_1 = axisPrefix.charAt(1);
+        _builder_45.append(_charAt_1, "\t");
+        _builder_45.append(").setLabel(");
+        DatamartAxis _axis_44 = data_axis.getAxis();
+        AxisEnum _name_51 = _axis_44.getName();
+        String _literal_36 = _name_51.getLiteral();
+        _builder_45.append(_literal_36, "\t");
+        _builder_45.append("TitlesArray.get(1)).setTickOptions(axisTickRenderer");
+        {
+          int _angle_2 = category_axis.getAngle();
+          boolean _notEquals_1 = (_angle_2 != 0);
+          if (_notEquals_1) {
+            _builder_45.append(".setAngle(");
+            int _angle_3 = data_axis.getAngle();
+            _builder_45.append(_angle_3, "\t");
+            _builder_45.append(")");
+          }
+        }
+        _builder_45.append("));");
+        _builder_45.newLineIfNotEmpty();
+        _builder_45.append("\t");
+        _builder_45.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_2 = axisPrefix.charAt(1);
+        _builder_45.append(_charAt_2, "\t");
+        _builder_45.append("2).setLabel(");
+        DatamartAxis _axis_45 = data_axis.getAxis();
+        AxisEnum _name_52 = _axis_45.getName();
+        String _literal_37 = _name_52.getLiteral();
+        _builder_45.append(_literal_37, "\t");
+        _builder_45.append("TitlesArray.get(2)).setTickOptions(axisTickRenderer");
+        {
+          int _angle_4 = category_axis.getAngle();
+          boolean _notEquals_2 = (_angle_4 != 0);
+          if (_notEquals_2) {
+            _builder_45.append(".setAngle(");
+            int _angle_5 = data_axis.getAngle();
+            _builder_45.append(_angle_5, "\t");
+            _builder_45.append(")");
+          }
+        }
+        _builder_45.append("));");
+        _builder_45.newLineIfNotEmpty();
+        _builder_45.append("}");
+        _builder_45.newLine();
+        body = _builder_45.toString();
+      } else {
+        StringConcatenation _builder_46 = new StringConcatenation();
+        _builder_46.append(body, "");
+        _builder_46.append("CanvasAxisTickRenderer tickRenderer = new CanvasAxisTickRenderer();");
+        _builder_46.newLineIfNotEmpty();
+        _builder_46.append("tickRenderer.setTextColor(\"#202020\");");
+        _builder_46.newLine();
+        _builder_46.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_3 = axisPrefix.charAt(0);
+        _builder_46.append(_charAt_3, "");
+        _builder_46.append(")");
+        _builder_46.newLineIfNotEmpty();
+        _builder_46.append("\t");
+        _builder_46.append(".setRenderer(AxisRenderers.");
+        RenderTypeEnum _renderType_5 = category_axis.getRenderType();
+        String _name_53 = _renderType_5.name();
+        String _string_4 = _name_53.toString();
+        _builder_46.append(_string_4, "\t");
+        _builder_46.append(")");
+        _builder_46.newLineIfNotEmpty();
+        _builder_46.append("\t");
+        _builder_46.append(".setLabel(");
+        DatamartAxis _axis_46 = category_axis.getAxis();
+        AxisEnum _name_54 = _axis_46.getName();
+        String _literal_38 = _name_54.getLiteral();
+        _builder_46.append(_literal_38, "\t");
+        _builder_46.append("AxisLabel)");
+        _builder_46.newLineIfNotEmpty();
+        _builder_46.append("\t");
+        _builder_46.append(".setTicks(");
+        DatamartAxis _axis_47 = category_axis.getAxis();
+        AxisEnum _name_55 = _axis_47.getName();
+        String _literal_39 = _name_55.getLiteral();
+        _builder_46.append(_literal_39, "\t");
+        _builder_46.append("Ticks)");
+        _builder_46.newLineIfNotEmpty();
+        _builder_46.append("\t");
+        _builder_46.append(".setTickOptions(tickRenderer");
+        {
+          int _angle_6 = category_axis.getAngle();
+          boolean _notEquals_3 = (_angle_6 != 0);
+          if (_notEquals_3) {
+            _builder_46.append(".setAngle(");
+            int _angle_7 = category_axis.getAngle();
+            _builder_46.append(_angle_7, "\t");
+            _builder_46.append(")");
+          }
+        }
+        _builder_46.append("));");
+        _builder_46.newLineIfNotEmpty();
+        body = _builder_46.toString();
+        StringConcatenation _builder_47 = new StringConcatenation();
+        _builder_47.append(body, "");
+        _builder_47.append("CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();");
+        _builder_47.newLineIfNotEmpty();
+        _builder_47.append("axisTickRenderer.setTextColor(\"#202020\");");
+        _builder_47.newLine();
+        _builder_47.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_4 = axisPrefix.charAt(1);
+        _builder_47.append(_charAt_4, "");
+        _builder_47.append(")");
+        _builder_47.newLineIfNotEmpty();
+        _builder_47.append("\t");
+        _builder_47.append(".setPad(1.05f)");
+        _builder_47.newLine();
+        _builder_47.append("\t");
+        _builder_47.append(".setTickOptions(axisTickRenderer");
+        {
+          int _angle_8 = data_axis.getAngle();
+          boolean _notEquals_4 = (_angle_8 != 0);
+          if (_notEquals_4) {
+            _builder_47.append(".setAngle(");
+            int _angle_9 = data_axis.getAngle();
+            _builder_47.append(_angle_9, "\t");
+            _builder_47.append(")");
+          }
+        }
+        _builder_47.append("));");
+        _builder_47.newLineIfNotEmpty();
+        body = _builder_47.toString();
+        Set<String> _keySet = multipleAxes.keySet();
+        for (final String axisKey : _keySet) {
+          boolean _equals_7 = axisKey.equals("1");
+          boolean _not_1 = (!_equals_7);
+          if (_not_1) {
+            StringConcatenation _builder_48 = new StringConcatenation();
+            _builder_48.append(body, "");
+            String _get = multipleAxes.get(axisKey);
+            _builder_48.append(_get, "");
+            body = _builder_48.toString();
+          }
+        }
+        Set<String> _keySet_1 = multipleAxes.keySet();
+        int _size = _keySet_1.size();
+        boolean _greaterThan_2 = (_size > 0);
+        if (_greaterThan_2) {
+          StringConcatenation _builder_49 = new StringConcatenation();
+          _builder_49.append(body, "");
+          _builder_49.append("LinearAxisRenderer linearAxisRenderer = new LinearAxisRenderer();");
+          _builder_49.newLineIfNotEmpty();
+          _builder_49.append("linearAxisRenderer.setAlignTicks(true);");
+          _builder_49.newLine();
+          _builder_49.append("AxesDefaults axesDefaults = new AxesDefaults()");
+          _builder_49.newLine();
+          _builder_49.append("\t");
+          _builder_49.append(".setUseSeriesColor(true)");
+          _builder_49.newLine();
+          _builder_49.append("\t");
+          _builder_49.append(".setBorderWidth(3)\t");
+          _builder_49.newLine();
+          _builder_49.append("\t");
+          _builder_49.append(".setRendererOptions(linearAxisRenderer);");
+          _builder_49.newLine();
+          _builder_49.append("options.setAxesDefaults(axesDefaults);");
+          _builder_49.newLine();
+          body = _builder_49.toString();
+        }
+      }
+      StringConcatenation _builder_50 = new StringConcatenation();
+      _builder_50.append(body, "");
+      _builder_50.append("options.setAxes(axes);");
+      _builder_50.newLineIfNotEmpty();
+      body = _builder_50.toString();
+    }
+    ChartDatamart _source_1 = chart.getSource();
+    EList<ChartElement> _elements_1 = _source_1.getElements();
+    for (final ChartElement element_1 : _elements_1) {
+      if ((element_1 instanceof ChartLegend)) {
+        ChartLegend legend = ((ChartLegend) element_1);
+        StringConcatenation _builder_51 = new StringConcatenation();
+        _builder_51.append(body, "");
+        _builder_51.append("Legend legend = new Legend().setShow(");
+        boolean _notEquals_5 = (!Objects.equal(legend, null));
+        boolean _booleanValue_2 = Boolean.valueOf(_notEquals_5).booleanValue();
+        String _string_5 = Boolean.valueOf(_booleanValue_2).toString();
+        _builder_51.append(_string_5, "");
+        _builder_51.append(");");
+        _builder_51.newLineIfNotEmpty();
+        body = _builder_51.toString();
+        StringConcatenation _builder_52 = new StringConcatenation();
+        _builder_52.append(body, "");
+        _builder_52.append("legend.setPlacement(LegendPlacements.");
+        LegendPlacementEnum _placement = legend.getPlacement();
+        String _name_56 = _placement.name();
+        _builder_52.append(_name_56, "");
+        _builder_52.append(");");
+        _builder_52.newLineIfNotEmpty();
+        body = _builder_52.toString();
+        boolean _isToggle = legend.isToggle();
+        if (_isToggle) {
+          StringConcatenation _builder_53 = new StringConcatenation();
+          _builder_53.append(body, "");
+          _builder_53.append("EnhancedLegendRenderer renderer = new EnhancedLegendRenderer();");
+          _builder_53.newLineIfNotEmpty();
+          _builder_53.append("renderer.setSeriesToggle(SeriesToggles.");
+          ToggleTypeEnum _toggleType = legend.getToggleType();
+          String _name_57 = _toggleType.getName();
+          _builder_53.append(_name_57, "");
+          _builder_53.append(");");
+          _builder_53.newLineIfNotEmpty();
+          _builder_53.append("renderer.setSeriesToggleReplot(");
+          boolean _isReplot = legend.isReplot();
+          boolean _booleanValue_3 = Boolean.valueOf(_isReplot).booleanValue();
+          String _string_6 = Boolean.valueOf(_booleanValue_3).toString();
+          _builder_53.append(_string_6, "");
+          _builder_53.append(");");
+          _builder_53.newLineIfNotEmpty();
+          _builder_53.append("legend.setRendererOptions(renderer);");
+          _builder_53.newLine();
+          body = _builder_53.toString();
+        }
+        StringConcatenation _builder_54 = new StringConcatenation();
+        _builder_54.append(body, "");
+        _builder_54.append("options.setLegend(legend);");
+        _builder_54.newLineIfNotEmpty();
+        body = _builder_54.toString();
+      }
+    }
+    ChartDatamart _source_2 = chart.getSource();
+    EList<ChartElement> _elements_2 = _source_2.getElements();
+    for (final ChartElement element_2 : _elements_2) {
+      if ((element_2 instanceof ChartHighlighter)) {
+        ChartHighlighter highlighter = ((ChartHighlighter) element_2);
+        StringConcatenation _builder_55 = new StringConcatenation();
+        _builder_55.append(body, "");
+        _builder_55.append("Highlighter highlighter = new Highlighter().setShow(");
+        boolean _notEquals_6 = (!Objects.equal(highlighter, null));
+        boolean _booleanValue_4 = Boolean.valueOf(_notEquals_6).booleanValue();
+        String _string_7 = Boolean.valueOf(_booleanValue_4).toString();
+        _builder_55.append(_string_7, "");
+        _builder_55.append(");");
+        _builder_55.newLineIfNotEmpty();
+        body = _builder_55.toString();
+        StringConcatenation _builder_56 = new StringConcatenation();
+        _builder_56.append(body, "");
+        _builder_56.append("highlighter.setShowTooltip(true)");
+        _builder_56.newLineIfNotEmpty();
+        _builder_56.append(".setTooltipAlwaysVisible(");
+        boolean _isTooltipAlways = highlighter.isTooltipAlways();
+        boolean _booleanValue_5 = Boolean.valueOf(_isTooltipAlways).booleanValue();
+        String _string_8 = Boolean.valueOf(_booleanValue_5).toString();
+        _builder_56.append(_string_8, "");
+        _builder_56.append(")");
+        _builder_56.newLineIfNotEmpty();
+        _builder_56.append(".setKeepTooltipInsideChart(");
+        boolean _isInsideChart = highlighter.isInsideChart();
+        boolean _booleanValue_6 = Boolean.valueOf(_isInsideChart).booleanValue();
+        String _string_9 = Boolean.valueOf(_booleanValue_6).toString();
+        _builder_56.append(_string_9, "");
+        _builder_56.append(")");
+        _builder_56.newLineIfNotEmpty();
+        _builder_56.append(".setTooltipLocation(TooltipLocations.");
+        TooltipLocationEnum _location = highlighter.getLocation();
+        String _name_58 = _location.name();
+        _builder_56.append(_name_58, "");
+        _builder_56.append(")");
+        _builder_56.newLineIfNotEmpty();
+        _builder_56.append(".setBringSeriesToFront(true)");
+        _builder_56.newLine();
+        _builder_56.append(".setFadeTooltip(true)");
+        _builder_56.newLine();
+        _builder_56.append(".setShowMarker(true);");
+        _builder_56.newLine();
+        body = _builder_56.toString();
+        StringConcatenation _builder_57 = new StringConcatenation();
+        _builder_57.append(body, "");
+        _builder_57.append("highlighter.setTooltipAxes(TooltipAxes.");
+        _builder_57.append(axisPrefix, "");
+        _builder_57.append(postfix, "");
+        _builder_57.append(");");
+        _builder_57.newLineIfNotEmpty();
+        body = _builder_57.toString();
+        StringConcatenation _builder_58 = new StringConcatenation();
+        _builder_58.append(body, "");
+        _builder_58.append("options.setHighlighter(highlighter);");
+        _builder_58.newLineIfNotEmpty();
+        body = _builder_58.toString();
+      }
+    }
+    ChartOption _charttype_41 = chart.getCharttype();
+    if ((_charttype_41 instanceof ChartLine)) {
+      ChartOption _charttype_42 = chart.getCharttype();
+      boolean _isCursor = ((ChartLine) _charttype_42).isCursor();
+      if (_isCursor) {
+        StringConcatenation _builder_59 = new StringConcatenation();
+        _builder_59.append(body, "");
+        _builder_59.append("Cursor cursor = new Cursor()");
+        _builder_59.newLineIfNotEmpty();
+        _builder_59.append("\t");
+        _builder_59.append(".setShow(true)");
+        _builder_59.newLine();
+        _builder_59.append("\t");
+        _builder_59.append(".setZoom(");
+        ChartOption _charttype_43 = chart.getCharttype();
+        boolean _isZoom = ((ChartLine) _charttype_43).isZoom();
+        String _string_10 = Boolean.valueOf(_isZoom).toString();
+        _builder_59.append(_string_10, "\t");
+        _builder_59.append(")");
+        _builder_59.newLineIfNotEmpty();
+        _builder_59.append("\t");
+        _builder_59.append(".setShowTooltip(");
+        ChartOption _charttype_44 = chart.getCharttype();
+        boolean _isTooltip = ((ChartLine) _charttype_44).isTooltip();
+        String _string_11 = Boolean.valueOf(_isTooltip).toString();
+        _builder_59.append(_string_11, "\t");
+        _builder_59.append(");");
+        _builder_59.newLineIfNotEmpty();
+        _builder_59.append("options.setCursor(cursor);");
+        _builder_59.newLine();
+        body = _builder_59.toString();
+      }
+      ChartOption _charttype_45 = chart.getCharttype();
+      boolean _isAnimated_1 = ((ChartLine) _charttype_45).isAnimated();
+      if (_isAnimated_1) {
+        StringConcatenation _builder_60 = new StringConcatenation();
+        _builder_60.append(body, "");
+        _builder_60.append("options.setAnimate(true);");
+        _builder_60.newLineIfNotEmpty();
+        body = _builder_60.toString();
+      }
+    }
+    if (hasAxis) {
+      StringConcatenation _builder_61 = new StringConcatenation();
+      _builder_61.append(body, "");
+      _builder_61.append("options.setSeries(");
+      DatamartAxis _axis_48 = data_axis.getAxis();
+      AxisEnum _name_59 = _axis_48.getName();
+      String _literal_40 = _name_59.getLiteral();
+      _builder_61.append(_literal_40, "");
+      _builder_61.append("Series);");
+      _builder_61.newLineIfNotEmpty();
+      body = _builder_61.toString();
+    }
+    StringConcatenation _builder_62 = new StringConcatenation();
+    _builder_62.append(body, "");
+    _builder_62.append("DCharts chart = new DCharts()");
+    _builder_62.newLineIfNotEmpty();
+    _builder_62.append("\t");
+    _builder_62.append(".setDataSeries(dataSeries)");
+    _builder_62.newLine();
+    _builder_62.append("\t");
+    _builder_62.append(".setOptions(options)");
+    _builder_62.newLine();
+    _builder_62.append("\t");
+    _builder_62.append(".setEnableDownload(true)");
+    _builder_62.newLine();
+    _builder_62.append("\t");
+    _builder_62.append(".setDownloadButtonCaption(dslMetadataService.translate(locale.toLanguageTag(), \"download\"))");
+    _builder_62.newLine();
+    _builder_62.append("\t");
+    _builder_62.append(".setDownloadFilename(\"");
+    String _name_60 = chart.getName();
+    _builder_62.append(_name_60, "\t");
+    _builder_62.append("\")");
+    _builder_62.newLineIfNotEmpty();
+    _builder_62.append("\t");
+    _builder_62.append(".setDownloadButtonLocation(DownloadButtonLocation.TOP_RIGHT);");
+    _builder_62.newLine();
+    body = _builder_62.toString();
+    StringConcatenation _builder_63 = new StringConcatenation();
+    _builder_63.append(body, "");
+    _builder_63.append("chart.setId(\"chart\");");
+    _builder_63.newLineIfNotEmpty();
+    _builder_63.append("chart.setImmediate(true);");
+    _builder_63.newLine();
+    _builder_63.append("if(chartRefresherDone) {");
+    _builder_63.newLine();
+    _builder_63.append("\t");
+    _builder_63.append("chart.show();");
+    _builder_63.newLine();
+    _builder_63.append("}");
+    _builder_63.newLine();
+    _builder_63.append("charts.add(chart);");
+    _builder_63.newLine();
+    _builder_63.append("return chart;");
+    body = _builder_63.toString();
+    return body;
+  }
+  
+  /**
+   * <p>helper method to convert a rgb string to a hex string.</p>
+   */
+  public String toHex(final String rgb) {
+    String colorHex = "#";
+    String[] _split = rgb.split(",");
+    for (final String color : _split) {
+      {
+        Integer i = new Integer(color);
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append(colorHex, "");
+        String _format = String.format("%02x", i);
+        _builder.append(_format, "");
+        colorHex = _builder.toString();
+      }
+    }
+    return colorHex;
+  }
+  
+  /**
+   * <p>build the label series. Create multiple y-axes when the underlying datamart presents different scales.</p>
+   * 
+   * <p>scales are used to display line charts together for comparison reason but they are of different scalings.</p>
+   */
+  public String createLabelSeries(final Chart chart, final ChartAxis data_axis, final HashMap<String, String> multipleAxes, final String axisPrefix, final boolean showMarker) {
+    String body = "";
+    int msrCnt = 0;
+    ChartDatamart _source = chart.getSource();
+    DatamartDefinition _datamartRef = ((ChartDatamart) _source).getDatamartRef();
+    DatamartSource _source_1 = _datamartRef.getSource();
+    if ((_source_1 instanceof DatamartCube)) {
+      ChartDatamart _source_2 = chart.getSource();
+      DatamartDefinition _datamartRef_1 = ((ChartDatamart) _source_2).getDatamartRef();
+      DatamartSource _source_3 = _datamartRef_1.getSource();
+      EList<DatamartCubeElement> _axisslicer = ((DatamartCube) _source_3).getAxisslicer();
+      for (final DatamartCubeElement axisOrSlicer : _axisslicer) {
+        if ((axisOrSlicer instanceof DatamartAxis)) {
+          EList<DatamartElement> _elements = ((DatamartAxis) axisOrSlicer).getElements();
+          for (final DatamartElement element : _elements) {
+            {
+              if ((element instanceof DatamartDerivedMeasure)) {
+                boolean _isScaled = ((DatamartDerivedMeasure) element).isScaled();
+                if (_isScaled) {
+                  StringConcatenation _builder = new StringConcatenation();
+                  _builder.append(body, "");
+                  ValueScaleEnum _scale = ((DatamartDerivedMeasure) element).getScale();
+                  String _createScale = this.createScale(_scale, data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
+                  _builder.append(_createScale, "");
+                  body = _builder.toString();
+                  msrCnt = (msrCnt + 1);
+                }
+              }
+              if ((element instanceof DatamartMeasure)) {
+                boolean _isScaled_1 = ((DatamartMeasure) element).isScaled();
+                if (_isScaled_1) {
+                  StringConcatenation _builder_1 = new StringConcatenation();
+                  _builder_1.append(body, "");
+                  ValueScaleEnum _scale_1 = ((DatamartMeasure) element).getScale();
+                  String _createScale_1 = this.createScale(_scale_1, data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
+                  _builder_1.append(_createScale_1, "");
+                  body = _builder_1.toString();
+                  msrCnt = (msrCnt + 1);
+                }
+              }
+            }
+          }
+        }
+      }
+    } else {
+      ChartDatamart _source_4 = chart.getSource();
+      DatamartDefinition _datamartRef_2 = ((ChartDatamart) _source_4).getDatamartRef();
+      DatamartSource _source_5 = _datamartRef_2.getSource();
+      if ((_source_5 instanceof DatamartEntity)) {
+        ChartDatamart _source_6 = chart.getSource();
+        DatamartDefinition _datamartRef_3 = ((ChartDatamart) _source_6).getDatamartRef();
+        DatamartSource _source_7 = _datamartRef_3.getSource();
+        DatamartEntity entity = ((DatamartEntity) _source_7);
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append(body, "");
+        String _entityScale = this.entityScale(entity, data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
+        _builder.append(_entityScale, "");
+        body = _builder.toString();
+      }
+    }
+    Set<String> _keySet = multipleAxes.keySet();
+    int _size = _keySet.size();
+    boolean _equals = (_size == 0);
+    if (_equals) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body, "");
+      _builder_1.append("\tfor (String title : ");
+      DatamartAxis _axis = data_axis.getAxis();
+      AxisEnum _name = _axis.getName();
+      String _literal = _name.getLiteral();
+      _builder_1.append(_literal, "");
+      _builder_1.append("TitlesArray) {");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t\t");
+      DatamartAxis _axis_1 = data_axis.getAxis();
+      AxisEnum _name_1 = _axis_1.getName();
+      String _literal_1 = _name_1.getLiteral();
+      _builder_1.append(_literal_1, "\t\t");
+      _builder_1.append("Series.addSeries(new XYseries().setLabel(title).setShowMarker(");
+      String _string = Boolean.valueOf(showMarker).toString();
+      _builder_1.append(_string, "\t\t");
+      _builder_1.append("));");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("}");
+      _builder_1.newLine();
+      body = _builder_1.toString();
+    }
+    return body;
+  }
+  
+  /**
+   * <p>helper method for scales coming from datamart entities not from cubes.</p>
+   */
+  public String entityScale(final DatamartEntity entity, final ChartAxis data_axis, final HashMap<String, String> multipleAxes, final int msrCnt, final String axisPrefix, final boolean showMarker) {
+    int counter = msrCnt;
+    String body = "";
+    EList<DatamartProperty> _properties = entity.getProperties();
+    for (final DatamartProperty property : _properties) {
+      if ((property instanceof DatamartProperty)) {
+        boolean _isScaled = property.isScaled();
+        if (_isScaled) {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(body, "");
+          ValueScaleEnum _scale = property.getScale();
+          String _createScale = this.createScale(_scale, data_axis, multipleAxes, counter, axisPrefix, showMarker);
+          _builder.append(_createScale, "");
+          body = _builder.toString();
+          counter = (counter + 1);
+        }
+      }
+    }
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      {
+        if ((navigation instanceof DatamartMember)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append(body, "");
+          DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
+          String _entityScale = this.entityScale(_datamartEntity, data_axis, multipleAxes, counter, axisPrefix, showMarker);
+          _builder_1.append(_entityScale, "");
+          body = _builder_1.toString();
+        }
+        if ((navigation instanceof DatamartOwner)) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append(body, "");
+          DatamartEntity _datamartEntity_1 = ((DatamartOwner) navigation).getDatamartEntity();
+          String _entityScale_1 = this.entityScale(_datamartEntity_1, data_axis, multipleAxes, counter, axisPrefix, showMarker);
+          _builder_2.append(_entityScale_1, "");
+          body = _builder_2.toString();
+        }
+      }
+    }
+    return body;
+  }
+  
+  /**
+   * <p>helper method for scales.</p>
+   */
+  public String createScale(final ValueScaleEnum scale, final ChartAxis data_axis, final HashMap<String, String> multipleAxes, final int msrCnt, final String axisPrefix, final boolean showMarker) {
+    String multipleBody = "";
+    String body = "";
+    int scaleOrdinal = scale.ordinal();
+    String scaleName = scale.toString();
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(body, "");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    DatamartAxis _axis = data_axis.getAxis();
+    AxisEnum _name = _axis.getName();
+    String _literal = _name.getLiteral();
+    _builder.append(_literal, "\t");
+    _builder.append("Series.addSeries(new XYseries(");
+    char _charAt = axisPrefix.charAt(1);
+    _builder.append(_charAt, "\t");
+    _builder.append("axes.");
+    char _charAt_1 = axisPrefix.charAt(1);
+    _builder.append(_charAt_1, "\t");
+    {
+      if ((scaleOrdinal != 0)) {
+        _builder.append((scaleOrdinal + 1), "\t");
+      }
+    }
+    _builder.append(").setLabel(");
+    DatamartAxis _axis_1 = data_axis.getAxis();
+    AxisEnum _name_1 = _axis_1.getName();
+    String _literal_1 = _name_1.getLiteral();
+    _builder.append(_literal_1, "\t");
+    _builder.append("TitlesArray.get(");
+    _builder.append(msrCnt, "\t");
+    _builder.append(")).setShowMarker(");
+    String _string = Boolean.valueOf(showMarker).toString();
+    _builder.append(_string, "\t");
+    _builder.append("));");
+    _builder.newLineIfNotEmpty();
+    body = _builder.toString();
+    Set<String> _keySet = multipleAxes.keySet();
+    boolean _contains = _keySet.contains(scaleName);
+    boolean _not = (!_contains);
+    if (_not) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("axes.addAxis(new XYaxis(XYaxes.");
+      char _charAt_2 = axisPrefix.charAt(1);
+      _builder_1.append(_charAt_2, "");
+      {
+        if ((scaleOrdinal != 0)) {
+          _builder_1.append((scaleOrdinal + 1), "");
+        }
+      }
+      _builder_1.append(").setTickOptions(axisTickRenderer");
+      {
+        int _angle = data_axis.getAngle();
+        boolean _notEquals = (_angle != 0);
+        if (_notEquals) {
+          _builder_1.append(".setAngle(");
+          int _angle_1 = data_axis.getAngle();
+          _builder_1.append(_angle_1, "");
+          _builder_1.append(")");
+        }
+      }
+      _builder_1.append("));");
+      _builder_1.newLineIfNotEmpty();
+      multipleBody = _builder_1.toString();
+      multipleAxes.put(scaleName, multipleBody);
+    }
+    return body;
+  }
+  
+  /**
+   * <p>helper method to get a property name or its alias if present of a entity's property object.</p>
+   */
+  public String getPropertyName(final DatamartProperty property) {
+    LEntityAttribute _propertyRef = property.getPropertyRef();
+    String _name = ((LAttribute) _propertyRef).getName();
+    return _name.toUpperCase();
+  }
+  
+  /**
+   * <p>helper method to get a level name of a hierarchy's level object.</p>
+   */
+  public String getLevelName(final CubeLevel level) {
+    return level.getName();
+  }
+  
+  public String setup(final Chart chart) {
+    String body = "";
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(body, "");
+    _builder.newLineIfNotEmpty();
+    _builder.append("subscribe();");
+    body = _builder.toString();
+    HashMap<String, String> filterIdMap = CollectionLiterals.<String, String>newHashMap();
+    boolean _and = false;
+    boolean _and_1 = false;
+    ChartDatamart _source = chart.getSource();
+    boolean _notEquals = (!Objects.equal(_source, null));
+    if (!_notEquals) {
+      _and_1 = false;
+    } else {
+      ChartDatamart _source_1 = chart.getSource();
+      DatamartDefinition _datamartRef = _source_1.getDatamartRef();
+      boolean _notEquals_1 = (!Objects.equal(_datamartRef, null));
+      _and_1 = _notEquals_1;
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      ChartDatamart _source_2 = chart.getSource();
+      DatamartDefinition _datamartRef_1 = _source_2.getDatamartRef();
+      String _name = _datamartRef_1.getName();
+      boolean _notEquals_2 = (!Objects.equal(_name, null));
+      _and = _notEquals_2;
+    }
+    if (_and) {
+      ChartDatamart _source_3 = chart.getSource();
+      DatamartDefinition _datamartRef_2 = _source_3.getDatamartRef();
+      this.datamartInferrer.createFilterMap(_datamartRef_2, filterIdMap);
+    }
+    Set<String> _keySet = filterIdMap.keySet();
+    for (final String filter : _keySet) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body, "");
+      String _get = filterIdMap.get(filter);
+      CharSequence _setupEvent = this.setupEvent(_get, filter);
+      _builder_1.append(_setupEvent, "");
+      body = _builder_1.toString();
+    }
+    return body;
+  }
+  
+  public CharSequence setupEvent(final String eventId, final String filter) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("eventBroker.subscribe(\"");
+    _builder.append(eventId, "");
+    _builder.append("\",");
+    _builder.newLineIfNotEmpty();
+    _builder.append("new org.osgi.service.event.EventHandler() {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("@Override");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("public void handleEvent(org.osgi.service.event.Event event) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("final EventBrokerMsg msg = (EventBrokerMsg)event.getProperty(org.eclipse.e4.core.di.extensions.EventUtils.DATA);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("filterGenerator.selectItem(\"");
+    _builder.append(filter, "\t\t");
+    _builder.append("\", msg.getName());");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("});");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public CharSequence localeChanged(final Chart chart) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("this.locale = locale;");
+    _builder.newLine();
+    _builder.append("if(charts != null) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("for(DCharts chart:charts) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("chart.setLocale(locale);");
+    _builder.newLine();
+    {
+      boolean _and = false;
+      ChartDatamart _source = chart.getSource();
+      DatamartDefinition _datamartRef = _source.getDatamartRef();
+      boolean _isDescription = _datamartRef.isDescription();
+      if (!_isDescription) {
+        _and = false;
+      } else {
+        ChartDatamart _source_1 = chart.getSource();
+        DatamartDefinition _datamartRef_1 = _source_1.getDatamartRef();
+        String _descriptionValue = _datamartRef_1.getDescriptionValue();
+        boolean _notEquals = (!Objects.equal(_descriptionValue, null));
+        _and = _notEquals;
+      }
+      if (_and) {
+        _builder.append("\t\t");
+        _builder.append("chart.setDescription(dslMetadataService.translate(locale.toLanguageTag(), \"");
+        ChartDatamart _source_2 = chart.getSource();
+        DatamartDefinition _datamartRef_2 = _source_2.getDatamartRef();
+        String _descriptionValue_1 = _datamartRef_2.getDescriptionValue();
+        _builder.append(_descriptionValue_1, "\t\t");
+        _builder.append("\"));");
+        _builder.newLineIfNotEmpty();
+        _builder.append("\t\t");
+        _builder.append("chart.setDownloadButtonCaption(dslMetadataService.translate(locale.toLanguageTag(), \"download\"));");
+        _builder.newLine();
+      }
+    }
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("if(filterGenerator != null) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("filterGenerator.setLocale(locale);");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("if(layoutManager != null) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("layoutManager.setLabelValue(dslMetadataService.translate(locale.toLanguageTag(), \"");
+    String _name = chart.getName();
+    _builder.append(_name, "\t");
+    _builder.append("\"));");
+    _builder.newLineIfNotEmpty();
+    _builder.append("}");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  public void infer(final EObject pckg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    if (pckg instanceof ChartPackage) {
+      _infer((ChartPackage)pckg, acceptor, isPreIndexingPhase);
+      return;
+    } else if (pckg != null) {
+      _infer(pckg, acceptor, isPreIndexingPhase);
+      return;
+    } else {
+      throw new IllegalArgumentException("Unhandled parameter types: " +
+        Arrays.<Object>asList(pckg, acceptor, isPreIndexingPhase).toString());
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java
new file mode 100644
index 0000000..c7a5015
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java
@@ -0,0 +1,958 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.chart.jvmmodel;
+
+import com.vaadin.data.Property;
+import com.vaadin.server.Page;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.JavaScriptFunction;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.UI;
+import elemental.json.JsonArray;
+import elemental.json.JsonException;
+import elemental.json.JsonObject;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.Executors;
+import javax.inject.Inject;
+import org.dussan.vaadin.dcharts.DCharts;
+import org.dussan.vaadin.dcharts.DownloadButtonLocation;
+import org.dussan.vaadin.dcharts.base.elements.Trendline;
+import org.dussan.vaadin.dcharts.base.elements.XYaxis;
+import org.dussan.vaadin.dcharts.base.elements.XYseries;
+import org.dussan.vaadin.dcharts.data.DataSeries;
+import org.dussan.vaadin.dcharts.data.Ticks;
+import org.dussan.vaadin.dcharts.metadata.LegendPlacements;
+import org.dussan.vaadin.dcharts.metadata.PyramidSides;
+import org.dussan.vaadin.dcharts.metadata.SeriesToggles;
+import org.dussan.vaadin.dcharts.metadata.TooltipAxes;
+import org.dussan.vaadin.dcharts.metadata.XYaxes;
+import org.dussan.vaadin.dcharts.metadata.Xaxes;
+import org.dussan.vaadin.dcharts.metadata.Yaxes;
+import org.dussan.vaadin.dcharts.metadata.directions.BarDirections;
+import org.dussan.vaadin.dcharts.metadata.locations.TooltipLocations;
+import org.dussan.vaadin.dcharts.metadata.renderers.AxisRenderers;
+import org.dussan.vaadin.dcharts.metadata.renderers.SeriesRenderers;
+import org.dussan.vaadin.dcharts.options.Axes;
+import org.dussan.vaadin.dcharts.options.AxesDefaults;
+import org.dussan.vaadin.dcharts.options.Cursor;
+import org.dussan.vaadin.dcharts.options.Highlighter;
+import org.dussan.vaadin.dcharts.options.Legend;
+import org.dussan.vaadin.dcharts.options.Options;
+import org.dussan.vaadin.dcharts.options.Series;
+import org.dussan.vaadin.dcharts.options.SeriesDefaults;
+import org.dussan.vaadin.dcharts.options.Title;
+import org.dussan.vaadin.dcharts.renderers.axis.LinearAxisRenderer;
+import org.dussan.vaadin.dcharts.renderers.legend.EnhancedLegendRenderer;
+import org.dussan.vaadin.dcharts.renderers.series.BarRenderer;
+import org.dussan.vaadin.dcharts.renderers.series.BubbleRenderer;
+import org.dussan.vaadin.dcharts.renderers.series.DonutRenderer;
+import org.dussan.vaadin.dcharts.renderers.series.MeterGaugeRenderer;
+import org.dussan.vaadin.dcharts.renderers.series.PieRenderer;
+import org.dussan.vaadin.dcharts.renderers.series.PyramidRenderer;
+import org.dussan.vaadin.dcharts.renderers.tick.AxisTickRenderer;
+import org.dussan.vaadin.dcharts.renderers.tick.CanvasAxisTickRenderer;
+import org.eclipse.e4.core.di.extensions.EventUtils;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.eventbroker.EventBrokerMsg;
+import org.eclipse.osbp.ui.api.datamart.DerivedOlapException;
+import org.eclipse.osbp.utils.constants.ExtendedDate;
+import org.eclipse.osbp.utils.vaadin.ViewLayoutManager;
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartModel;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.osbp.xtext.chart.jvmmodel.D3JsJavaUtil;
+import org.eclipse.osbp.xtext.datamart.common.DatamartFilterGenerator;
+import org.eclipse.osbp.xtext.datamart.common.olap.CellSetToD3JsonConverter;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCell;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedHierarchy;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedLevel;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedPosition;
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.naming.QualifiedName;
+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.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+@SuppressWarnings("all")
+public class ChartModelGenerator extends I18NModelGenerator {
+  @Inject
+  @Extension
+  private IQualifiedNameProvider _iQualifiedNameProvider;
+  
+  @Inject
+  @Extension
+  private D3JsJavaUtil _d3JsJavaUtil;
+  
+  @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);
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef, _typeRef_1);
+      JvmType _type = _typeRef_2.getType();
+      importManager.addImportFor(_type);
+      JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(Map.class, _typeRef_3, _typeRef_4);
+      JvmType _type_1 = _typeRef_5.getType();
+      importManager.addImportFor(_type_1);
+      JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(Collection.class, _typeRef_6);
+      JvmType _type_2 = _typeRef_7.getType();
+      importManager.addImportFor(_type_2);
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, Property.ValueChangeListener.class, DCharts.class, Label.class, List.class, ArrayList.class, Page.class, Page.Styles.class, DerivedAxis.class, DerivedCell.class, DerivedPosition.class, DerivedMember.class, HorizontalLayout.class, TabSheet.class, Series.class, XYseries.class, Ticks.class, DataSeries.class, SeriesDefaults.class, SeriesRenderers.class, CanvasAxisTickRenderer.class, DonutRenderer.class, PieRenderer.class, BubbleRenderer.class, BarRenderer.class, BarDirections.class, MeterGaugeRenderer.class, PyramidRenderer.class, PyramidSides.class, Trendline.class, Cursor.class, Legend.class, LegendPlacements.class, EnhancedLegendRenderer.class, SeriesToggles.class, Highlighter.class, Title.class, TooltipLocations.class, TooltipAxes.class, Axes.class, XYaxes.class, XYaxis.class, Xaxes.class, Yaxes.class, AxisTickRenderer.class, AxisRenderers.class, LinearAxisRenderer.class, AxesDefaults.class, DownloadButtonLocation.class, Options.class, DerivedHierarchy.class, DerivedLevel.class, DerivedOlapException.class, IEventBroker.class, CellSetToD3JsonConverter.class, Date.class, ExtendedDate.class, JavaScriptFunction.class, JsonArray.class, JsonObject.class, JsonException.class, EventHandler.class, Event.class, EventUtils.class, EventBrokerMsg.class, Executors.class, Page.BrowserWindowResizeEvent.class, Page.BrowserWindowResizeListener.class, Notification.class, Adapter.class, AdapterImpl.class, EObject.class, UIElementImpl.class, UiPackageImpl.class, MUIElement.class, MPartStack.class, UI.class, ResourceBundle.class, Locale.class, DatamartFilterGenerator.class, ViewLayoutManager.class);
+      _xblockexpression = super.createAppendable(context, importManager, config);
+    }
+    return _xblockexpression;
+  }
+  
+  public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
+    super.addTranslatables("download");
+    super.doGenerate(input, fsa);
+    EList<EObject> _contents = input.getContents();
+    for (final EObject obj : _contents) {
+      this.internalDoGenerate(obj, fsa);
+    }
+  }
+  
+  protected void _internalDoGenerate(final ChartModel chartModel, final IFileSystemAccess fsa) {
+    EList<ChartPackage> _packages = chartModel.getPackages();
+    for (final ChartPackage pkg : _packages) {
+      EList<Chart> _charts = pkg.getCharts();
+      for (final Chart chart : _charts) {
+        ChartOption _charttype = chart.getCharttype();
+        if ((_charttype instanceof ChartTree)) {
+          QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
+          String pckgName = _fullyQualifiedName.toString();
+          StringBuilder strBuilder = new StringBuilder();
+          String pckgNamePath = pckgName.replaceAll("\\.", "/");
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(pckgNamePath, "");
+          _builder.append("/");
+          String _createChartJsFilename = this._d3JsJavaUtil.createChartJsFilename(chart);
+          _builder.append(_createChartJsFilename, "");
+          String propOutputFile = _builder.toString();
+          this.generateJsFile(chart, strBuilder);
+          int _length = strBuilder.length();
+          boolean _greaterThan = (_length > 0);
+          if (_greaterThan) {
+            fsa.generateFile(propOutputFile, strBuilder);
+          }
+        }
+      }
+    }
+  }
+  
+  public void generateJsFile(final Chart chart, final StringBuilder strBuilder) {
+    String _createfullyQualifiedChartFilename = this._d3JsJavaUtil.createfullyQualifiedChartFilename(chart);
+    String chartFilePath = _createfullyQualifiedChartFilename.replaceAll("\\.", "_");
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      ChartTree chartTree = ((ChartTree) _charttype_1);
+      boolean _isMap = chartTree.isMap();
+      if (_isMap) {
+        this.generateTreeMapJsFile(strBuilder, chartFilePath);
+      } else {
+        boolean _isCollapsible = chartTree.isCollapsible();
+        if (_isCollapsible) {
+          this.generateCollTreeJsFile(strBuilder, chartFilePath);
+        }
+      }
+    }
+  }
+  
+  public void generateTreeMapJsFile(final StringBuilder strBuilder, final String chartJavaFileName) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(chartJavaFileName, "");
+    _builder.append(" = function() {");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var margin = {");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("top: 40,");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("right: 10,");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("bottom: 10,");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("left: 10");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("},");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("width = 960 - margin.left - margin.right,");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("height = 500 - margin.top - margin.bottom;");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var color = d3.scale.category20c();");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("function position() {");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("this.style(\"left\", function (d) {");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append("return d.x + \"px\";");
+    _builder.newLine();
+    _builder.append("\t\t    ");
+    _builder.append("})");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append(".style(\"top\", function (d) {");
+    _builder.newLine();
+    _builder.append("\t\t            ");
+    _builder.append("return d.y + \"px\";");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append("})");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append(".style(\"width\", function (d) {");
+    _builder.newLine();
+    _builder.append("\t\t            ");
+    _builder.append("return Math.max(0, d.dx - 1) + \"px\";");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append("})");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append(".style(\"height\", function (d) {");
+    _builder.newLine();
+    _builder.append("\t\t            ");
+    _builder.append("return Math.max(0, d.dy - 1) + \"px\";");
+    _builder.newLine();
+    _builder.append("\t\t        ");
+    _builder.append("});");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var cxD3TreeMapJsHTMLRootComponent = this.getElement();");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var cxD3TreeMapJsComponentHtmlTagId = this.getState().htmlTagId;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var checked = \"\";");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var connector = this;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var dataColumn = \"\";");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var preValueLabel = \"\";");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("for (var i=0;i < this.getState().dataColumnList.length;i++) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("if (i == 0){");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("checked = \" checked\";");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("preValueLabel = this.getState().dataColumnList[0];");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("} else {");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("checked = \"\";");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("dataColumn = dataColumn + \"\\t<label><input id=\\\"\"+this.getState().htmlTagId+\"_input\\\" type=\\\"radio\\\" name=\\\"mode\\\" value=\\\"\"+ this.getState().dataColumnList[i] + \"\\\"\" + checked + \"> \"+ this.getState().dataColumnList[i] + \"</label>\\n\";");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("var treemap = d3.layout.treemap()");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append(".size([width, height])");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append(".sticky(true)");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append(".value(function (d) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("return eval(\"d.\" + preValueLabel);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("});");
+    _builder.newLine();
+    _builder.append("//\t\talert(\"dataColumn: \" + dataColumn);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("cxD3TreeMapJsHTMLRootComponent.innerHTML = \t\"<form>\\n\" +");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t");
+    _builder.append("dataColumn +");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t");
+    _builder.append("\"</form>\\n\" +");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t");
+    _builder.append("\"<div id=\\\"\"+this.getState().htmlTagId+\"_div\\\">\" + \"</div>\";");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("var cxD3TreeMapJsHTMLRootComponentSelection = d3.select(cxD3TreeMapJsHTMLRootComponent).select(\"#\"+this.getState().htmlTagId+\"_div\");");
+    _builder.newLine();
+    _builder.append("//\t\t\talert(\"selection: \" + selection);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("var cxD3TreeMapJsHTMLRootComponentDiv = cxD3TreeMapJsHTMLRootComponentSelection.append(\"div\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t\t    ");
+    _builder.append(".style(\"position\", \"relative\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t\t\t");
+    _builder.append(".style(\"width\", (width + margin.left + margin.right) + \"px\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t\t\t");
+    _builder.append(".style(\"height\", (height + margin.top + margin.bottom) + \"px\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t\t    ");
+    _builder.append(".style(\"left\", margin.left + \"px\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t\t\t    ");
+    _builder.append(".style(\"top\", margin.top + \"px\");");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("jsonTreeMapFunction = function(jsonObj) {");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("var node = cxD3TreeMapJsHTMLRootComponentDiv.datum(jsonObj).selectAll(\".node\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".data(treemap.nodes)");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".enter().append(\"div\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".attr(\"class\", \"node\")");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".attr(\"title\", function(d) { return d.children ? \"\" : d.tooltipName + \"\\n\" + preValueLabel + \": \" + eval(\"d.\" + preValueLabel); })");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".call(position)");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".style(\"background\", function(d) { return d.children ? color(d.name) : null; })");
+    _builder.newLine();
+    _builder.append("//\t\t\t\t\t      .style(\"background\", function(d) { return d.children ? d3.rgb(\"red\") : null; })");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append(".text(function(d) { return d.children ? null : d.name; });");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("d3.select(cxD3TreeMapJsHTMLRootComponent).selectAll(\"#\"+cxD3TreeMapJsComponentHtmlTagId+\"_input\").on(\"change\", function change() {");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("var valueLabel = this.value;");
+    _builder.newLine();
+    _builder.append("//\t\t\t\t    alert(\"valueOut: \" + valueOut);");
+    _builder.newLine();
+    _builder.append("\t\t\t\t    ");
+    _builder.append("var value = this.value === \"count\"");
+    _builder.newLine();
+    _builder.append("\t\t\t\t        ");
+    _builder.append("? function() { return 1; }");
+    _builder.newLine();
+    _builder.append("\t\t\t\t        ");
+    _builder.append(": function (d) { return eval(\"d.\" + valueLabel); };");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("//\t\t\t\t        : function (d) { return d.size; };");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t  ");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t    ");
+    _builder.append("node.data(treemap.value(value).nodes)");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t      \t");
+    _builder.append(".attr(\"title\", function(d) { return d.children ? \"\" : d.tooltipName + \"\\n\" + valueLabel + \": \" + eval(\"d.\" + valueLabel); })");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t      \t");
+    _builder.append(".transition()");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t        ");
+    _builder.append(".duration(1500)");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t        ");
+    _builder.append(".call(position);");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t  ");
+    _builder.append("});");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("var jsonString = this.getState().jsonData;");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("jsonTreeMapFunction(JSON.parse(jsonString));");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    strBuilder.append(_builder);
+  }
+  
+  public void generateCollTreeJsFile(final StringBuilder strBuilder, final String chartJavaFileName) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(chartJavaFileName, "");
+    _builder.append(" = function() {");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var margin = {top: 20, right: 120, bottom: 20, left: 120},");
+    _builder.newLine();
+    _builder.append("    ");
+    _builder.append("width = 1460 - margin.right - margin.left,");
+    _builder.newLine();
+    _builder.append("    ");
+    _builder.append("height = 1000 - margin.top - margin.bottom;");
+    _builder.newLine();
+    _builder.append("    ");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var i = 0,");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("duration = 750,");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("cxD3TreeJsComponent_jsonRoot;");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var tree = d3.layout.tree()");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append(".size([height, width]);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var diagonal = d3.svg.diagonal()");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append(".projection(function(d) { return [d.y, d.x]; });");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var cxD3TreeJsHTMLRootComponent = this.getElement();");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("cxD3TreeJsHTMLRootComponent.innerHTML = \t");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("\"<label><input id=\\\"\"+this.getState().htmlTagId+\"_input\\\" type=\\\"radio\\\" name=\\\"mode\\\" value=\\\"expand\\\">Expand</label>\\n\" +");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("\"<label><input id=\\\"\"+this.getState().htmlTagId+\"_input\\\" type=\\\"radio\\\" name=\\\"mode\\\" value=\\\"collapse\\\" checked>Collapse</label>\\n\" +");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("\"<div id=\\\"\"+this.getState().htmlTagId+\"_div\\\">\" + \"</div>\";\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var cxD3TreeJsHTMLRootComponentSelection = d3.select(cxD3TreeJsHTMLRootComponent).select(\"#\"+this.getState().htmlTagId+\"_div\");");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("var cxD3TreeJsHTMLRootComponentSvg = cxD3TreeJsHTMLRootComponentSelection.append(\"svg\")");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append(".attr(\"width\", width + margin.right + margin.left)");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append(".attr(\"height\", height + margin.top + margin.bottom)");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append(".append(\"g\")");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append(".attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("function collapse(d) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("if (d.children) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("d._children = d.children;");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("d._children.forEach(collapse);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("d.children = null;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("function expand(d) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("if (d._children) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("d.children = d._children;");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("d.children.forEach(expand);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("d._children = null;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("jsonTreeFunction = function(jsonData) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("cxD3TreeJsComponent_jsonRoot = jsonData;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("cxD3TreeJsComponent_jsonRoot.x0 = height / 2;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("cxD3TreeJsComponent_jsonRoot.y0 = 0;");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.newLine();
+    _builder.append("\t\t  ");
+    _builder.append("cxD3TreeJsComponent_jsonRoot.children.forEach(collapse);");
+    _builder.newLine();
+    _builder.append("\t\t  ");
+    _builder.append("update(cxD3TreeJsComponent_jsonRoot);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("jsonTreeFunction(JSON.parse(this.getState().jsonData));");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("d3.select(cxD3TreeJsHTMLRootComponent).select(self.frameElement).style(\"height\", \"800px\");");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("d3.select(cxD3TreeJsHTMLRootComponent).selectAll(\"#\"+this.getState().htmlTagId+\"_input\").on(\"change\", function change() {");
+    _builder.newLine();
+    _builder.append("//\t\talert(\"this.value = \" + this.value);");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("if (this.value === \"expand\"){");
+    _builder.newLine();
+    _builder.append("\t    \t");
+    _builder.append("cxD3TreeJsComponent_jsonRoot.children.forEach(expand);");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("} else {");
+    _builder.newLine();
+    _builder.append("\t    \t");
+    _builder.append("cxD3TreeJsComponent_jsonRoot.children.forEach(collapse);");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("update(cxD3TreeJsComponent_jsonRoot);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("});");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("function update(source) {");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Compute the new tree layout.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("var nodes = tree.nodes(cxD3TreeJsComponent_jsonRoot).reverse(),");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append("links = tree.links(nodes);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Normalize for fixed-depth.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodes.forEach(function(d) { d.y = d.depth * 180; });");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Update the nodes€¦");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("var node = cxD3TreeJsHTMLRootComponentSvg.selectAll(\"g.node\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".data(nodes, function(d) { return d.id || (d.id = ++i); });");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Enter any new nodes at the parent\'s previous position.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("var nodeEnter = node.enter().append(\"g\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"class\", \"node\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"transform\", function(d) { return \"translate(\" + source.y0 + \",\" + source.x0 + \")\"; })");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".on(\"click\", click);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodeEnter.append(\"circle\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"r\", 1e-6)");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".style(\"fill\", function(d) { return d._children ? \"lightsteelblue\" : \"#fff\"; });");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodeEnter.append(\"text\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"x\", function(d) { return d.children || d._children ? -10 : 10; })");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"dy\", \".35em\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"text-anchor\", function(d) { return d.children || d._children ? \"end\" : \"start\"; })");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".text(function(d) { return d.name; })");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".style(\"fill-opacity\", 1e-6);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Transition nodes to their new position.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("var nodeUpdate = node.transition()");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".duration(duration)");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"transform\", function(d) { return \"translate(\" + d.y + \",\" + d.x + \")\"; });");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodeUpdate.select(\"circle\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"r\", 4.5)");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".style(\"fill\", function(d) { return d._children ? \"lightsteelblue\" : \"#fff\"; });");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodeUpdate.select(\"text\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".style(\"fill-opacity\", 1);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Transition exiting nodes to the parent\'s new position.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("var nodeExit = node.exit().transition()");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".duration(duration)");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"transform\", function(d) { return \"translate(\" + source.y + \",\" + source.x + \")\"; })");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".remove();");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodeExit.select(\"circle\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"r\", 1e-6);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodeExit.select(\"text\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".style(\"fill-opacity\", 1e-6);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Update the links€¦");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("var link = cxD3TreeJsHTMLRootComponentSvg.selectAll(\"path.link\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".data(links, function(d) { return d.target.id; });");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Enter any new links at the parent\'s previous position.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("link.enter().insert(\"path\", \"g\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"class\", \"link\")");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"d\", function(d) {");
+    _builder.newLine();
+    _builder.append("\t        ");
+    _builder.append("var o = {x: source.x0, y: source.y0};");
+    _builder.newLine();
+    _builder.append("\t        ");
+    _builder.append("return diagonal({source: o, target: o});");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append("});");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Transition links to their new position.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("link.transition()");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".duration(duration)");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"d\", diagonal);");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Transition exiting nodes to the parent\'s new position.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("link.exit().transition()");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".duration(duration)");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".attr(\"d\", function(d) {");
+    _builder.newLine();
+    _builder.append("\t        ");
+    _builder.append("var o = {x: source.x, y: source.y};");
+    _builder.newLine();
+    _builder.append("\t        ");
+    _builder.append("return diagonal({source: o, target: o});");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append("})");
+    _builder.newLine();
+    _builder.append("\t      ");
+    _builder.append(".remove();");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("// Stash the old positions for transition.");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("nodes.forEach(function(d) {");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("d.x0 = d.x;");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("d.y0 = d.y;");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("});");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("// Toggle children on click.");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("function click(d) {");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("if (d.children) {");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("d._children = d.children;");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("d.children = null;");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("} else {");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("d.children = d._children;");
+    _builder.newLine();
+    _builder.append("\t    ");
+    _builder.append("d._children = null;");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t  ");
+    _builder.append("update(d);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    strBuilder.append(_builder);
+  }
+  
+  public void internalDoGenerate(final EObject chartModel, final IFileSystemAccess fsa) {
+    if (chartModel instanceof JvmDeclaredType) {
+      _internalDoGenerate((JvmDeclaredType)chartModel, fsa);
+      return;
+    } else if (chartModel instanceof ChartModel) {
+      _internalDoGenerate((ChartModel)chartModel, fsa);
+      return;
+    } else if (chartModel != null) {
+      _internalDoGenerate(chartModel, fsa);
+      return;
+    } else {
+      throw new IllegalArgumentException("Unhandled parameter types: " +
+        Arrays.<Object>asList(chartModel, fsa).toString());
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java
new file mode 100644
index 0000000..24a865f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.chart.jvmmodel;
+
+import javax.inject.Inject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartOption;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.chart.ChartTree;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.xbase.lib.Extension;
+
+@SuppressWarnings("all")
+public class D3JsJavaUtil {
+  @Inject
+  @Extension
+  private IQualifiedNameProvider _iQualifiedNameProvider;
+  
+  public ChartTree getChartTreeMap(final Chart chart) {
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      return ((ChartTree) _charttype_1);
+    }
+    return null;
+  }
+  
+  public String createFilenamePostFix(final Chart chart) {
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      final ChartTree chartTree = ((ChartTree) _charttype_1);
+      boolean _isMap = chartTree.isMap();
+      if (_isMap) {
+        return "TreeMap";
+      } else {
+        boolean _isCollapsible = chartTree.isCollapsible();
+        if (_isCollapsible) {
+          return "CollapsibleTree";
+        }
+      }
+    }
+    return "";
+  }
+  
+  public boolean isTreeMap(final Chart chart) {
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      final ChartTree chartTree = ((ChartTree) _charttype_1);
+      boolean _isMap = chartTree.isMap();
+      if (_isMap) {
+        return true;
+      }
+    }
+    return false;
+  }
+  
+  public boolean isCollapsibleTree(final Chart chart) {
+    ChartOption _charttype = chart.getCharttype();
+    if ((_charttype instanceof ChartTree)) {
+      ChartOption _charttype_1 = chart.getCharttype();
+      final ChartTree chartTree = ((ChartTree) _charttype_1);
+      boolean _isCollapsible = chartTree.isCollapsible();
+      if (_isCollapsible) {
+        return true;
+      }
+    }
+    return false;
+  }
+  
+  private String createfullyQualifiedFilename(final Chart chart) {
+    EObject _eContainer = chart.eContainer();
+    ChartPackage pckg = ((ChartPackage) _eContainer);
+    String _name = pckg.getName();
+    String _string = _name.toString();
+    String _concat = _string.concat(".");
+    String _name_1 = chart.getName();
+    String _string_1 = _name_1.toString();
+    String _concat_1 = _concat.concat(_string_1);
+    String _createFilenamePostFix = this.createFilenamePostFix(chart);
+    return _concat_1.concat(_createFilenamePostFix);
+  }
+  
+  private String createFilename(final Chart chart) {
+    String _name = chart.getName();
+    String _string = _name.toString();
+    String _createFilenamePostFix = this.createFilenamePostFix(chart);
+    return _string.concat(_createFilenamePostFix);
+  }
+  
+  public String createChartFilename(final Chart chart) {
+    String _createFilename = this.createFilename(chart);
+    return _createFilename.concat("JsChart");
+  }
+  
+  public String createfullyQualifiedChartFilename(final Chart chart) {
+    String _createfullyQualifiedFilename = this.createfullyQualifiedFilename(chart);
+    return _createfullyQualifiedFilename.concat("JsChart");
+  }
+  
+  public String createChartJsFilename(final Chart chart) {
+    String _createFilename = this.createFilename(chart);
+    return _createFilename.concat(".js");
+  }
+  
+  public String createfullyQualifiedStateFilename(final Chart chart) {
+    String _createfullyQualifiedFilename = this.createfullyQualifiedFilename(chart);
+    return _createfullyQualifiedFilename.concat("JsState");
+  }
+  
+  public String createStateFilename(final Chart chart) {
+    String _createFilename = this.createFilename(chart);
+    return _createFilename.concat("JsState");
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/scoping/ChartScopeProvider.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/scoping/ChartScopeProvider.java
new file mode 100644
index 0000000..5e8ca41
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/scoping/ChartScopeProvider.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
+ * 
+ *  Contributors:
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ */
+package org.eclipse.osbp.xtext.chart.scoping;
+
+import com.google.common.base.Objects;
+import java.util.ArrayList;
+import javax.inject.Inject;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartDatamart;
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.MapBasedScope;
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.Extension;
+
+@SuppressWarnings("all")
+public class ChartScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+  @Inject
+  @Extension
+  private DatamartDSLJvmModelInferrer datamartInferrer;
+  
+  @Override
+  public IScope getScope(final EObject context, final EReference reference) {
+    boolean _equals = Objects.equal(reference, ChartDSLPackage.Literals.CHART_AXIS__AXIS);
+    if (_equals) {
+      return this.getScope_Chart_Axis_axis(context);
+    }
+    return super.getScope(context, reference);
+  }
+  
+  public IScope getScope_Chart_Axis_axis(final EObject object) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    EObject eObj = object;
+    while ((!(eObj instanceof ChartDatamart))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      DatamartDefinition datamart = ((ChartDatamart) eObj).getDatamartRef();
+      boolean _and = false;
+      boolean _notEquals_1 = (!Objects.equal(datamart, null));
+      if (!_notEquals_1) {
+        _and = false;
+      } else {
+        DatamartSource _source = datamart.getSource();
+        boolean _notEquals_2 = (!Objects.equal(_source, null));
+        _and = _notEquals_2;
+      }
+      if (_and) {
+        DatamartSource _source_1 = datamart.getSource();
+        if ((_source_1 instanceof DatamartCube)) {
+          DatamartSource _source_2 = datamart.getSource();
+          EList<DatamartCubeElement> _axisslicer = ((DatamartCube) _source_2).getAxisslicer();
+          for (final DatamartCubeElement axis : _axisslicer) {
+            if ((axis instanceof DatamartAxis)) {
+              AxisEnum _name = ((DatamartAxis) axis).getName();
+              String literal = _name.getLiteral();
+              IEObjectDescription _create = EObjectDescription.create(literal, ((DatamartAxis) axis));
+              result.add(_create);
+            }
+          }
+        } else {
+          DatamartSource _source_3 = datamart.getSource();
+          if ((_source_3 instanceof DatamartEntity)) {
+            DatamartSource _source_4 = datamart.getSource();
+            this.getEntityAxes(((DatamartEntity) _source_4), result);
+          } else {
+            DatamartSource _source_5 = datamart.getSource();
+            if ((_source_5 instanceof DatamartTask)) {
+              String _literal = AxisEnum.COLUMNS.getLiteral();
+              DatamartSource _source_6 = datamart.getSource();
+              IEObjectDescription _create_1 = EObjectDescription.create(_literal, ((DatamartTask) _source_6));
+              result.add(_create_1);
+              String _literal_1 = AxisEnum.ROWS.getLiteral();
+              DatamartSource _source_7 = datamart.getSource();
+              IEObjectDescription _create_2 = EObjectDescription.create(_literal_1, ((DatamartTask) _source_7));
+              result.add(_create_2);
+            }
+          }
+        }
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
+  
+  public void getEntityAxes(final DatamartEntity entity, final ArrayList<IEObjectDescription> result) {
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      {
+        if ((navigation instanceof DatamartMember)) {
+          DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
+          this.getEntityAxes(_datamartEntity, result);
+          DatamartEntity _datamartEntity_1 = ((DatamartMember) navigation).getDatamartEntity();
+          EList<DatamartProperty> _properties = _datamartEntity_1.getProperties();
+          for (final DatamartProperty property : _properties) {
+            AxisEnum _axis = property.getAxis();
+            String _literal = _axis.getLiteral();
+            IEObjectDescription _create = EObjectDescription.create(_literal, property);
+            result.add(_create);
+          }
+        }
+        if ((navigation instanceof DatamartOwner)) {
+          DatamartEntity _datamartEntity_2 = ((DatamartOwner) navigation).getDatamartEntity();
+          this.getEntityAxes(_datamartEntity_2, result);
+          DatamartEntity _datamartEntity_3 = ((DatamartOwner) navigation).getDatamartEntity();
+          EList<DatamartProperty> _properties_1 = _datamartEntity_3.getProperties();
+          for (final DatamartProperty property_1 : _properties_1) {
+            AxisEnum _axis_1 = property_1.getAxis();
+            String _literal_1 = _axis_1.getLiteral();
+            IEObjectDescription _create_1 = EObjectDescription.create(_literal_1, property_1);
+            result.add(_create_1);
+          }
+        }
+      }
+    }
+    EList<DatamartProperty> _properties = entity.getProperties();
+    for (final DatamartProperty property : _properties) {
+      AxisEnum _axis = property.getAxis();
+      boolean _notEquals = (!Objects.equal(_axis, null));
+      if (_notEquals) {
+        AxisEnum _axis_1 = property.getAxis();
+        String _literal = _axis_1.getLiteral();
+        IEObjectDescription _create = EObjectDescription.create(_literal, property);
+        result.add(_create);
+      } else {
+        AxisEnum _axis_2 = property.getAxis();
+        String _literal_1 = _axis_2.getLiteral();
+        IEObjectDescription _create_1 = EObjectDescription.create(_literal_1, property);
+        result.add(_create_1);
+      }
+    }
+  }
+  
+  public void getEntityProperties(final DatamartEntity entity, final ArrayList<IEObjectDescription> result, final String requestedAxisName) {
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      {
+        if ((navigation instanceof DatamartMember)) {
+          DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
+          this.getEntityProperties(_datamartEntity, result, requestedAxisName);
+          DatamartEntity _datamartEntity_1 = ((DatamartMember) navigation).getDatamartEntity();
+          EList<DatamartProperty> _properties = _datamartEntity_1.getProperties();
+          for (final DatamartProperty property : _properties) {
+            AxisEnum _axis = property.getAxis();
+            String _literal = _axis.getLiteral();
+            boolean _equals = _literal.equals(requestedAxisName);
+            if (_equals) {
+              String _propertyName = this.datamartInferrer.getPropertyName(property, null);
+              LEntityAttribute _propertyRef = property.getPropertyRef();
+              IEObjectDescription _create = EObjectDescription.create(_propertyName, _propertyRef);
+              result.add(_create);
+            }
+          }
+        }
+        if ((navigation instanceof DatamartOwner)) {
+          DatamartEntity _datamartEntity_2 = ((DatamartOwner) navigation).getDatamartEntity();
+          this.getEntityProperties(_datamartEntity_2, result, requestedAxisName);
+          DatamartEntity _datamartEntity_3 = ((DatamartOwner) navigation).getDatamartEntity();
+          EList<DatamartProperty> _properties_1 = _datamartEntity_3.getProperties();
+          for (final DatamartProperty property_1 : _properties_1) {
+            AxisEnum _axis_1 = property_1.getAxis();
+            String _literal_1 = _axis_1.getLiteral();
+            boolean _equals_1 = _literal_1.equals(requestedAxisName);
+            if (_equals_1) {
+              String _propertyName_1 = this.datamartInferrer.getPropertyName(property_1, null);
+              LEntityAttribute _propertyRef_1 = property_1.getPropertyRef();
+              IEObjectDescription _create_1 = EObjectDescription.create(_propertyName_1, _propertyRef_1);
+              result.add(_create_1);
+            }
+          }
+        }
+      }
+    }
+    EList<DatamartProperty> _properties = entity.getProperties();
+    for (final DatamartProperty property : _properties) {
+      AxisEnum _axis = property.getAxis();
+      boolean _notEquals = (!Objects.equal(_axis, null));
+      if (_notEquals) {
+        AxisEnum _axis_1 = property.getAxis();
+        String _literal = _axis_1.getLiteral();
+        boolean _equals = _literal.equals(requestedAxisName);
+        if (_equals) {
+          String _propertyName = this.datamartInferrer.getPropertyName(property, null);
+          LEntityAttribute _propertyRef = property.getPropertyRef();
+          IEObjectDescription _create = EObjectDescription.create(_propertyName, _propertyRef);
+          result.add(_create);
+        }
+      } else {
+        String _propertyName_1 = this.datamartInferrer.getPropertyName(property, null);
+        LEntityAttribute _propertyRef_1 = property.getPropertyRef();
+        IEObjectDescription _create_1 = EObjectDescription.create(_propertyName_1, _propertyRef_1);
+        result.add(_create_1);
+      }
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java
new file mode 100644
index 0000000..a54aefd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms 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.chart.validation;
+
+import com.google.common.base.Objects;
+import java.util.HashSet;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.chart.ChartPackage;
+import org.eclipse.osbp.xtext.chart.validation.AbstractChartDSLValidator;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("all")
+public class ChartDSLValidator extends AbstractChartDSLValidator {
+  @Check
+  public void checkDuplicateChartNames(final Chart chart) {
+    EObject eObj = chart.eContainer();
+    while ((!(eObj instanceof ChartPackage))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      ChartPackage chartPackage = ((ChartPackage) eObj);
+      EList<Chart> _charts = chartPackage.getCharts();
+      String _name = chart.getName();
+      Chart _findDuplicateChartNames = this.findDuplicateChartNames(_charts, _name);
+      boolean _notEquals_1 = (!Objects.equal(_findDuplicateChartNames, null));
+      if (_notEquals_1) {
+        String _name_1 = chart.getName();
+        String _concat = "Duplicate chart name \'".concat(_name_1);
+        String _concat_1 = _concat.concat("\'!");
+        this.error(_concat_1, ChartDSLPackage.Literals.CHART_BASE__NAME);
+      }
+    }
+  }
+  
+  private Chart findDuplicateChartNames(final EList<Chart> charts, final String chartName) {
+    HashSet<String> tempSet = CollectionLiterals.<String>newHashSet();
+    for (final Chart chart : charts) {
+      boolean _and = false;
+      String _name = chart.getName();
+      boolean _add = tempSet.add(_name);
+      boolean _not = (!_add);
+      if (!_not) {
+        _and = false;
+      } else {
+        String _name_1 = chart.getName();
+        boolean _equals = _name_1.equals(chartName);
+        _and = _equals;
+      }
+      if (_and) {
+        return chart;
+      }
+    }
+    return null;
+  }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..c3c0375
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,94 @@
+<?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.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.chart</groupId>
+    <artifactId>org.eclipse.osbp.xtext.chart.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>
+
+
+    <modules>
+        <module>org.eclipse.osbp.xtext.chart</module>
+        <module>org.eclipse.osbp.xtext.chart.tests</module>
+        <module>org.eclipse.osbp.xtext.chart.ui</module>
+        <module>org.eclipse.osbp.xtext.chart.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>